优化查询
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 # 执行迁移
|