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()提交的数据在这里是有刷新的
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM