Ошибка при выходе с базы данных
import psycopg2
from congif import host,user,password,db_name
try:
con = psycopg2.connect(
host = host,
user = user,
password = password,
database = db_name
)
with con.cursor() as cursor:
cursor.execute("SELECT version();")
print(f'Server version: {cursor.fetchone()}')
except Exception as err:
print('Error', err)
finally:
con.close()
print('[INFO] Connection closed')
Почему Выдает ошибку ?
NameError: name 'con' is not defined
Ответы (1 шт):
Автор решения: asanisimov
→ Ссылка
Вынесит инициализацию подключения выше (до блока try/except) и будет Вам счастье.
Но даже так может возникнуть ошибка в подключении и con.close выдаст еще одну. Мой совет - оборачивать подключение в контекстный менеджер, как вы это сделали с курсором.
import psycopg2
from congif import host,user,password,db_name
try:
with psycopg2.connect(
host = host,
user = user,
password = password,
database = db_name
) as con, con.cursor() as cursor:
cursor.execute("SELECT version();")
print(f'Server version: {cursor.fetchone()}')
except Exception as err:
print('Error', err)
Либо обработать проблему упомянутую выше.
import psycopg2
from congif import host,user,password,db_name
con = None
try:
con = psycopg2.connect(
host = host,
user = user,
password = password,
database = db_name
)
with con.cursor() as cursor:
cursor.execute("SELECT version();")
print(f'Server version: {cursor.fetchone()}')
except Exception as err:
print('Error', err)
finally:
if con:
con.close()
print('[INFO] Connection closed')