2.flask使用数据库
mysql是关系型数据库,所有数据均存储在表中,表为不同的实体建模,表中的列为实体的数据属性。(主键的值是表中各行的唯一标识;外键引用主键)行之间的这种联系叫做关系。
2.1 ORM
ORM用于实现面向对象编程语言里不同类型系统的数据之间的转换。(极端情况下,完全可以不需要再写SQL语句)
2.3 flask-sqlalchemy连接数据库
先创建一个flask-SQLALchemy提供的SQLALchemy类对象,需要传入当前的app。(必须先创建这个数据库,才能进行连接)需要在app.config中设置SQLALCHEMY_DATABASE_URI来配置数据库的连接。
测试连接是否成功
app.app_context():创建了一个应用程序上下文,可以在没有实际HTTP请求的情况下执行与FLASK应用程序相关的操作。
with:表示他会在代码块执行完毕后被正确的关闭或释放。
db.engine.connect()表示正在建立与数据库的连接。
2.4 基于flask-sqlalchemy使用ORM
建立ORM模型与数据库表映射关系
更新内容
2.5 基于ORM进行crud
更新
其中 db.create_all()要考虑是否每次都执行
创建ORM对象
① get查找:根据主键进行查找(删除操作后,id值不存在,但是id列仍然存在并继续工作)
②all()查找:查找全部数据
③first查找:获取第一条满足条件数据
4.1 filter查找
4.2 filter查找+all()
5.1 filter_by查找
5.2 filter_by查找+all()
获取了所有username为"root"的User对象并返回列表形式
5.3 filter_by查找+first()
获取了第一个username为"root"的User对象信息
⑥filter_by查找+order_by
⑦group_by查找
⑧filter_by查找+limit
⑨filter拓展(精确查找)
删除操作
修改操作
找到第一个username为‘ffff’的用户并对其password进行修改
2.6 ORM模型与外键
2.6.1 表关系
表关系分为3种{一对多,一对一,多对多}
2.6.2 外键
创建外键是通过db.ForeignKey实现
更新article class
2.6.3 一对多
2.6.3.1 flask中back_populates使用
back_populates需要绑定双方都进行属性绑定
2.6.3.2 flask中back_ref
只需要在一对多关系中多的实体类新增backref即可完成双向绑定(只写一条)
注意:多人开发时建议使用back_populates
2.6.4 一对一
实现一对一,要在flask-sqlalchemy中通过db.relationship传递uselist=False即可实现将“多”设置为“一”。同时,为了在数据库层面实现一对一,还需要在外键上设置unique=True
user=User.query.get(5)是为了从User表中获取主键为5的记录