2011-04-05 170 views
8

假设我们需要在从SQLAlchemy会话中加载一些对象之后做一些长时间的计算,我们希望在计算过程中关闭数据库连接,然后重新连接到数据库。如何在SQLAlchemy中做到这一点?关闭并重新连接SQLAlchemy会话的数据库连接?

或者,是否有必要关闭会话并重新创建一个,并合并/重新加载所有相关的对象?但是我发现session.close()没有关闭连接,即使是session.connection().close()或关闭绑定到会话的连接也没有关闭它。那么如何关闭连接,在我使用会话之后并退出应用程序之前?

+0

如果您认为如此,请将问题标记为已回答。 – 2013-05-30 11:26:19

回答

13

从SQLAlchemy Google Group得到答案:终止正在进行的事务后使用session.bind.dispose()。它处理整个连接池,所有数据库连接都关闭。

我可以举行会议,例如,提交或回滚会话而不是关闭会话。当我稍后需要使用它时,它会自动进行必要的连接。此方法使我无法重新创建会话和合并对象。

+1

嗨加里,在我的情况下,它仍然没有关闭MySQL连接(我可以看到一个新的进程(使用'showprocesslist;'),但在'sleep'模式下,即使我使用'session.bind.dispose )')。有什么建议么? – Sangram 2014-01-14 06:38:22