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