DetachedInstanceError:SQLAlchemy想要刷新已清除实例的DateTime属性

时间:2015-07-31 12:59:51

标签: python sqlalchemy

我正在使用autocommit=Trueexpire_on_commit=False的会话。我使用会话来获取带有指向对象A的外键的对象B。然后我拨打session.expunge(a.b); session.expunge(a)

稍后,当尝试读取b.some_datetime的值时,SQLAlchemy会引发DetachedInstanceError。没有为延迟加载配置任何属性。错误是随机发生的。

这怎么可能?我假设在对象被清除后,所有标量属性都会被急切地加载并可用。

对于它的价值,对象被清除,以便在与数据库的所有交互结束后,它们可以在另一个线程中使用。

1 个答案:

答案 0 :(得分:1)

其中一个映射类的字段具有onupdate属性,导致它在对象更改时到期。

解决方法是在刷新和session.refresh(myobj)的调用之间调用session.expunge()