Следующий код 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
повышается:
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