在使用 SQLAlchemy 的过程中,有时会出现下列错误:
sqlalchemy.orm.exc.DetachedInstanceError: Instance <EntityMedicamentVariety at 0x2675fef6978> is not bound to a Session; attribute refresh operation cannot proceed (Ba
ckground on this error at: http://sqlalche.me/e/bhk3)
出现以上错误的原因是因为:session 已经被提交,导致操作的 model 对象已经不在当前 session 中了。 解决的办法就是:把对象重新加入到当前 session 中:
def foo(user):
# do something...
session.commit()
user = session.query(User).filter_by(name='Jim').first()
foo(user)
print user in session # False
print user.name # DetachedInstanceError: Instance <User at 0x2b45b53509d0> is not bound to a Session
user = session.merge(user) # 加上这句话即可
print user in session # True
print user.name # Jim
---------------------------------------------------------------
session.refresh(user)
print user.name # Eric
网友评论