我是 SQLAlchemy 的新手,并且在没有访问原作者的情况下继承了一个有点混乱的代码库。
代码中包含对 的调用DBSession.flush()
,似乎在作者想要确保数据被保存的任何时候。起初我只是按照我在这段代码中看到的模式,但是当我阅读文档时,似乎这是不必要的——自动刷新应该到位。此外,我遇到了一些 AJAX 调用的情况,这些调用会生成错误“InvalidRequestError: Session is already flushing”。
在什么情况下我会合法地继续调用flush()?
这是一个 Pyramid 应用程序,正在设置 SQLAlchemy:
DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension(), expire_on_commit=False))
Base = declarative_base()