2011-04-05 236 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