假设我们需要在从SQLAlchemy会话加载一些对象后进行一些长时间的计算,我们希望在计算过程中关闭数据库连接,然后重新连接到数据库。如何在SQLAlchemy中做到这一点?
或者,是否有必要关闭会话并每次重新创建一个会话,并合并/重新加载所有相关对象?但我发现session.close()
不会关闭连接,即使session.connection().close()
或关闭绑定到会话的连接也不会关闭它。那么,如何在使用会话之后和退出应用程序之前关闭连接呢?
从 SQLAlchemy Google Group 得到答案:在终止正在进行的事务后使用 session.bind.dispose()
。它释放整个连接池,因此关闭所有数据库连接。
我可以保留会话,例如提交或回滚会话而不是关闭它。当我以后需要使用它时,它会自动进行必要的连接。此方法使我免于重新创建会话和合并对象。