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更改。刷新还会有效地提交您的数据。
添加回答
举报
0/150
提交
取消