Flask数据操作

First Post:

Last Update:

优化查询

1
user.query.options(load_only(user.id))

增加数据

(增加数据主要需要三步操作)

创建模型对象

模型对象 = 模型类(字段名=字段值)

将模型对象添加到会话中

组件对象.session.add(模型对象)

提交会话

组件对象.session.commit()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1.创建模型对象
user1 = User(name='zs', age=20)
# user1.name = 'zs'
# user1.age = 20

# 2.将模型对象添加到会话中
db.session.add(user1)
# 添加多条记录
# db.session.add_all([user1, user2, user3])

# 3.提交会话 (会提交事务)
# sqlalchemy会自动创建隐式事务
# 事务失败会自动回滚
db.session.commit()

return "index"

查询

1
2
User.query.(查询方法)
User.query.all()

删除数据

1. 先查询, 再删除

2. 基于过滤条件的删除

1
2
3
4
5
6
7
8
9
10
11
12
13
@app.route('/del')
def delete():
"""删除数据"""

# 方式1: 先查后删除
goods = Goods.query.filter(Goods.name == '方便面').first()
# 删除数据
db.session.delete(goods)
# 提交会话 增删改都要提交会话
db.session.commit()

return "index"

方法二

1
2
3
4
# 方式2: delete子查询
Goods.query.filter(Goods.name == '方便面').delete()
# 提交会话
db.session.commit()

刷新数据

Session 被设计为数据操作的执行者, 会先将操作产生的数据保存到内存中
在执行 flush刷新操作 后, 数据操作才会同步到数据库中
有两种情况下会 隐式执行刷新操作:
提交会话
执行查询操作 (包括 update 和 delete 子查询)
开发者也可以 手动执行刷新操作 session.flush()

执行迁移命令

1
2
3
4
export FLASK_APP=hm_数据迁移.py  # 设置环境变量指定启动文件
flask db init # 生成迁移文件夹
flask db migrate # ⽣成迁移版本, 保存到迁移文件夹中
flask db upgrade # 执行迁移