データベースが起動している場合、次のcx_Oracle
コードは正常に機能します。
#!C:\Python27
import cx_Oracle
try:
conn = cx_Oracle.connect("scott/tiger@oracle")
try:
curs = conn.cursor()
curs.execute("SELECT dummy FROM sys.dual")
print curs.fetchone()[0]
finally:
curs.close()
finally:
conn.close()
しかし、このスクリプトを実行したときにデータベースがダウンしていると、aNameError
が発生します。
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