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

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


我已经阅读了文档,但没有一个更明智-他们似乎假设了我没有的预见性。


我对它们对内存使用量的影响特别感兴趣。我正在从一系列文件(总共约500万行)中将一些数据加载到数据库中,而我的会话有时会崩溃-这是一个大型数据库,并且一台机器没有多少内存。


我想知道我是否使用了太多commit()而不足够的flush()呼叫-但是如果不真正了解两者之间的区别,很难分辨!


杨__羊羊
浏览 699回答 2
2回答

繁星点点滴滴

正如@snapshoe所说flush() 将您的SQL语句发送到数据库commit() 提交事务。时间session.autocommit == False:commit()flush()如果您设置,会打电话autoflush == True。时间session.autocommit == True:commit()如果您尚未开始交易,则无法致电(您可能没有,因为您可能仅使用此模式来避免手动管理交易)。在这种模式下,您必须致电flush()以保存您的ORM更改。刷新还会有效地提交您的数据。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python