SQLAlchemy:提交后会话查询是否仍然有效?

Wiz*_*Wiz 8 sqlalchemy

我刚开始使用这个SQLAlchemy ORM,我想知道,如果在调用会话提交后,如果你仍然可以使用该sesison进行查询,甚至可能再次提交.

所以,例如

session = Session()
session.add(Foo())
session.commit()
print session.query(Foo).first()
session.add(Bar())
session.commit()
Run Code Online (Sandbox Code Playgroud)

这些代码都有用吗?

van*_*van 8

简短回答:是的.
答案很长:请阅读使用会话以及管理交易部分.


And*_*kas 6

正如 @van 已经指出的那样,答案是肯定的,但是这里是基于sqlalchemy 文档的解释:

\n\n
\n

当回滚或提交(即session.rollback()或 )后事务状态完成session.commit()时,Session 释放所有 Transaction 和 Connection 资源,并返回到 \xe2\x80\x9cbegin\xe2\x80\x9d 状态,这将再次调用新的 Connection 和接收作为发出 SQL 语句的新请求的事务对象。

\n
\n