CSDN博客地址

flask_sqlalchemy中的db.session.update()与db.sesssion.merge()方法的区别,db.session.query(Model)与Model.query()的区别

调用merge()方法,此时实体状态并没有被持久化,但是数据库中的记录被更新了.merge方法与update方法的差别在于针对同样的操作update方法会报错
session.merge()方法会首先发送一句select语句,去数据库中获取UserInfo持久化标识所对应的表记录;然后自动生成一个持久化状态的实体,与脱管状态的实体做比较是否有所改变;一旦发生了改变,才会发送update语句执行更新。而按执行顺序,若两句session.merge()方法针对同一个脱管状态的实体,那其结果只会执行最后一个session.merge()方法所发出的update语句。
 
db.session.commit()提交了数据到数据库,但是没有刷新模型映射中的数据,也就是model.query()中的数据。
而使用db.session.query()则是 从整个服务会话中进行查询,而db.session.commit()提交的数据在这里是有刷新的
 
posted @ 2020-03-06 10:31  Yi_warmth  阅读(4451)  评论(0编辑  收藏  举报
CSDN博客地址