gpt4 book ai didi

python - SQLAlchemy 自动提交?

转载 作者:太空宇宙 更新时间:2023-11-03 19:38:00 29 4
gpt4 key购买 nike

我对 SQLAlchemy 显然提交有疑问。我的代码的粗略草图:

trans = self.conn.begin()
try:
assert not self.conn.execute(my_obj.__table__.select(my_obj.id == id)).first()
self.conn.execute(my_obj.__table__.insert().values(id=id))
assert not self.conn.execute(my_obj.__table__.select(my_obj.id == id)).first()
except:
trans.rollback()
raise

我不提交,第二个断言总是失败!换句话说,即使代码位于事务中,数据似乎也被插入到数据库中!这个评估准确吗?

最佳答案

您是对的,更改不会提交到数据库。但是当您执行查询时,它们会被 SQLAlchemy 自动刷新,在您的情况下,刷新是在带有断言的行上执行的。因此,如果您不显式调用commit,您将永远不会在数据库中的真实数据中看到这些更改。但是,只要您使用相同的 conn 对象,您就会取回它们。

您可以将 autoflush=False 传递给 session 构造函数来禁用此行为。

关于python - SQLAlchemy 自动提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2432527/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com