以下cx_Oracle
代碼工作正常時,數據庫已啓動:關閉一個cx_Oracle連接,同時允許唐氏數據庫
#!C:\Python27
import cx_Oracle
try:
conn = cx_Oracle.connect("scott/[email protected]")
try:
curs = conn.cursor()
curs.execute("SELECT dummy FROM sys.dual")
print curs.fetchone()[0]
finally:
curs.close()
finally:
conn.close()
但如果數據庫恰好是下來的時候我運行此腳本,一個NameError
上升:
Traceback (most recent call last):
File "C:\Users\ArtMetzer\Documents\Code\Python\db_conn_test.py", line 14, in <module>
conn.close()
NameError: name 'conn' is not defined
這對我來說很有意義:cx_Oracle
無法實例化一個連接,所以可變conn
從來沒有得到設定,因此沒有close()
方法。
在Python中,什麼是確保數據庫連接關閉的最佳方式,同時還能正常處理關閉數據庫的情況?
做類似下面似乎是一個龐大的雜牌對我說:
finally:
try:
conn.close()
except NameError:
pass
在最後一個例子,curs.close()和conn.close()如果curs.execute()失敗永遠不會被調用。不過,我敢打賭,在退出期間一切都會被清理乾淨。必須檢查Oracle中的活動連接以查看連接是否得到清理。 – Doug 2014-09-19 22:17:28