gpt4 book ai didi

SQLAlchemy:如何在 session.close() 之后在 SQLAlchemy 中使用实例?

转载 作者:行者123 更新时间:2023-12-01 05:25:48 25 4
gpt4 key购买 nike

我在 session.close() 之后在 SQLAlchemy 中使用实例时遇到问题。

这是代码:

session = sqlalchemy.orm.sessionmaker(bind=engine)
object = session.query(Entity).filter(Entity.id == id).one()
object.name = "Foo"
session.commit()
session.close()
print object.name

它抛出一个 DetachedInstanceError。

我试图分离对象, expunge_all() 什么也没有。

谢谢

编辑

我发现了问题所在。为了将来引用,我将回答我自己的问题。

session.commit() 将对象实例设置为过期,当我尝试在 close() 语句 SQLAlchemy 尝试刷新实例后访问对象属性时。
在 commit() 之后调用 refresh 解决了问题。

最佳答案

您也可以尝试设置 expire_on_commit=False这会影响 commit打电话,可能意味着你不需要做 refresh (假设这是昂贵的)。

关于SQLAlchemy:如何在 session.close() 之后在 SQLAlchemy 中使用实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13904735/

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