当前位置:   article > 正文

Flask-sqlalchemy高级机制之刷新数据flush_sqlalchemy update flush

sqlalchemy update flush

Flask-sqlalchemy高级机制之刷新数据flush

  • Session机制 被设计为数据操作的执行者, 会先将操作产生的数据保存到内存中
  • 在执行 flush刷新操作后, 数据操作才会同步到数据库(内存)中
  • 有两种情况下会 隐式(自动)执行刷新操作:
    1.提交会话
    2.执行查询操作 (包括 update 和 delete 子查询)
    在这里插入图片描述
    代码示例:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# 相关配置
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/test'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)


# 构建模型类  
class Goods(db.Model):
    __tablename__ = 't_good'  
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(20), unique=True) 
    count = db.Column(db.Integer)  


@app.route('/')
def purchase():

    goods = Goods(name='方便面', count=20)
    db.session.add(goods)
    # 主动执行flush操作, 立即执行SQL操作(数据库同步)
    db.session.flush()

    # Goods.query.count()  # 查询操作会自动执行flush操作
    db.session.commit()  # 提交会话会自动执行flush操作

    return "index"


if __name__ == '__main__':
    db.drop_all()
    db.create_all()

    app.run(debug=True)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

补充:
应用场合:当一次请求过程中,有多次提交数据,后面一次提交的数据需依赖前一次提交数据(成功)的基础上才能提交,可以先把前一次执行数据的结果刷新进数据库内存。
注:flush执行之后,仅仅是将数据临时刷新进数据库内存,并未真实写入磁盘文件,在commit提交后才真正写入磁盘。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/747512
推荐阅读
相关标签
  

闽ICP备14008679号