尝试执行以下操作时:
for line in blines:
line.account = get_customer(line.AccountCode)
试图将值赋给line.account
时出现错误:
DetachedInstanceError: Parent instance <SunLedgerA at 0x16eda4d0> is not bound to a Session; lazy load operation of attribute 'account' cannot proceed
我做错什么了吗??
当我过早地关闭查询会话(即,在会话关闭后有代码处理那些SQLAlchemy模型对象)时,我遇到了这种类型的
DetachedInstanceError
。因此,这是一条反复检查no session闭包的线索,直到您完全不需要与模型对象交互,即一些延迟加载的模型属性等“分离”意味着您正在处理一个与
Session
无关的ORM对象。Session
是关系数据库的网关,因此每当您引用映射对象上的属性时,ORM有时需要返回数据库以获取该属性的当前值。一般来说,您应该只处理“附加”对象-“分离”是用于缓存和在会话之间移动对象的临时状态。请参阅Quickie Intro to Object States,然后可能还会阅读该文档的其余部分;)。
我对芹菜也有同样的问题。把
lazy='subquery'
添加到关系中解决了我的问题。相关问题 更多 >
编程相关推荐