Не могу закрыть соединение С БД в python
Есть скрипт, основная его часть это:
try:
con = sqlite3.connect('Posts.db')
cur = con.cursor()
...
except:
...
except:
finally:
cur.close()
con.close()
Дело в том, что у меня в коде после открытия соединения и курсора могут быть сгенерированы ошибки, и я хочу закрывать соединение независимо от того, произошли ошибки или нет.
Как это лучше оформить? В каждом except у меня после принта ошибки стоит raise SystemExit. Если я напишу в finally:
cur.close()
con.close()
то до их выполнения дело может и не дойти? Да и интерпретатор выводит ошибку NameError: name 'cur' is not defined
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Ошибка NameError: name 'cur' is not defined происходит при обращении к переменной, что не была инициализирована (считай, создана), поэтому заранее создаете их, а в finally проверяете, что у них есть значения:
con = None
cur = None
try:
con = sqlite3.connect('Posts.db')
cur = con.cursor()
...
except:
...
except:
finally:
if cur is not None:
cur.close()
if con is not None:
con.close()