标签:python程序 cal index add set 语言 查看 映射 commit
SQLAlchemy是一个基于Python实现的ORM框架,能满足大多数数据库操作需求,同时支持多种数据库引擎(SQLite,MySQL,Postgresql,Oracle等)
SQLAlchemy组件中最有名的是它的对象关系映射器(ORM)
ORM 将数据库中的表与面向对象语言中的类建立了一种对应关系
这样,我们要操作数据库,数据库中的表或者表中的一条记录就可以直接通过操作类或者类实例来完成。
优点:
对数据表的抽象,允许开发人员首先考虑数据模型,同时使得Python程序更加简洁易读。
对各种数据库引擎的封装,使得开发人员在面对不同数据库时,只需要做简单修改即可,工作量大大减少。
SQLAlchemy本身无法操作数据库,必须依赖pymsql等第三方插件。根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作
MySQL-Python mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname> pymysql mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>] MySQL-Connector mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname> cx_Oracle oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]
其他可参考此处:http://docs.sqlalchemy.org/en/latest/dialects/index.html
2.1 使用flask-sqlalchemy的使用
from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 数据库类型://用户名:密码(没有密码则为空,不填)@数据库主机地址/数据库名?编码 DB_URL = ‘mysql+pymysql://root:@localhost/test?charset=utf8‘ # 添加到全局配制中,这步必学要有 app.config[‘SQLALCHEMY_DATABASE_URI‘] = DB_URL app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS‘] = False db = SQLAlchemy(app) class Parent(db.Model): __tablename__ = ‘parent‘ id = db.Column(db.Integer, primary_key=True) par_name = db.Column(db.String(50), nullable=False) children = db.relationship("Child", backref="parent") # 在父表类中通过relationship() 方法来引用子表的类集合 # 当我们需要在父表中添加子表关系时使用 relationship,这样子表将会在多对一的关系中通过.parent的方式获得父表的属性 class Child(db.Model): __tablename__ = ‘child‘ id = db.Column(db.Integer, primary_key=True) child_name = db.Column(db.String(50), nullable=False) parent_id = db.Column(db.Integer, db.ForeignKey(‘parent.id‘)) # 在子表类中通过 foreign key (外键)引用父表的参考字段 # db.drop_all() #删除表 # db.create_all() #创建表 # 添加数据 # par1 = Parent(par_name=‘爸爸1‘) # par2 = Parent(par_name=‘爸爸2‘) # chi = Child(child_name=‘儿子1‘,parent_id=2) # db.session.add(par1) # db.session.add(par2) # db.session.add(chi) # db.session.commit() # 查看数据 # par =Parent.query.all() # print(par) # [<Parent 1>, <Parent 2>] # chi = Child.query.filter(Child.parent_id).first().child_name # print(chi) # 儿子1 # 修改数据 # chi = Child.query.filter(Child.parent_id).first() # chi.child_name = "好儿子" # db.session.commit() # 刷新数据库,可以看见数据已经更新 # 删除数据 # par =Parent.query.filter(Parent.id==1).first() # db.session.delete(par) # db.session.commit() # 刷新数据库,id=1的数据已经不存在 @app.route(‘/‘) def hello_world(): return ‘Hello World!‘ if __name__ == ‘__main__‘: app.run(port=5050)
最终的效果
标签:python程序 cal index add set 语言 查看 映射 commit
原文地址:https://www.cnblogs.com/LearningOnline/p/9672709.html