在pyramind paster pshell中的transaction.commit之后避免会话到期

时间:2011-07-07 10:45:32

标签: python sqlalchemy pyramid paster

似乎tansaction.commit()是我必须在金字塔paster pshell中进行提交的唯一方法。 我理解它在提供网页方面很好,但在shell中,之后,在下一个SQLAlchemy MyModel.my_attribute调用中我得到:

DetachedInstanceError: Parent instance <MyModel at 0x9394d0c> is not bound to
a Session; lazy load operation of attribute 'my_attribute' cannot proceed

我该如何避免呢?

2 个答案:

答案 0 :(得分:1)

keep_session=True传递给ZopeTransactionExtension()

来源: https://pypi.python.org/pypi/zope.sqlalchemy#long-lasting-session-scopes

答案 1 :(得分:0)

我认为这是由SQLA会话的expire_on_commit选项引起的。执行提交后,必须刷新与旧事务一起使用的对象或将其合并到新会话中。关键是这实际上并不与transaction模块本身相关。