为了账号安全,请及时绑定邮箱和手机立即绑定

SQLAlchemy:flush()和commit()有什么区别?

SQLAlchemy:flush()和commit()有什么区别?

杨__羊羊 2019-12-07 14:23:17
flush()和commit()SQLAlchemy 之间有什么区别?我已经阅读了文档,但没有一个更明智-他们似乎假设了我没有的预见性。我对它们对内存使用量的影响特别感兴趣。我正在从一系列文件(总共约500万行)中将一些数据加载到数据库中,而我的会话有时会崩溃-这是一个大型数据库,并且一台机器没有多少内存。我想知道我是否使用了太多commit()而不足够的flush()呼叫-但是如果不真正了解两者之间的区别,很难分辨!
查看完整描述

2 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

正如@snapshoe所说


flush() 将您的SQL语句发送到数据库


commit() 提交事务。


时间session.autocommit == False:


commit()flush()如果您设置,会打电话autoflush == True。


时间session.autocommit == True:


commit()如果您尚未开始交易,则无法致电(您可能没有,因为您可能仅使用此模式来避免手动管理交易)。


在这种模式下,您必须致电flush()以保存您的ORM更改。刷新还会有效地提交您的数据。


查看完整回答
反对 回复 2019-12-07
  • 2 回答
  • 0 关注
  • 698 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号