当数据库启动时,以下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()
但是,如果在我运行此脚本时数据库恰好关闭,NameError
则会引发 a:
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 中,确保您的数据库连接关闭,同时仍然优雅地处理关闭数据库的情况的最佳方法是什么?
做以下事情对我来说似乎是一个巨大的kludge:
finally:
try:
conn.close()
except NameError:
pass