Не удается подключится к postgreSQL
У меня такой код подключения к posrtgreSQL в Python Выдает ошибку: NameError: name 'connection' is not defined Подскажите, где я не прав?
try:
with psycopg2.connect(host=host,
user=user,
password=password,
database=db_name,
port=port) as connection:
with connection.cursor() as cursor:
cursor.execute("SELECT version();")
print(f"Server version: {cursor.fetchone()} ")
connection.close()
print('[INFO] PostgreSQL connection closed')
except Exception as _ex:
print('[INFO] Error while working with postgreSQL', _ex)
[INFO] Error while working with postgreSQL
[INFO] Error while working with postgreSQL
Ответы (1 шт):
Автор решения: Alex Titov
→ Ссылка
Я бы рекомендовал больше использовать with, хотя там есть некоторые тонкости, посмотрите https://www.psycopg.org/docs/usage.html#with-statement,
А имеющийся простой пример записал бы так:
import psycopg2
try:
with psycopg2.connect("тут все параметры...") as connection:
with connection.cursor() as cursor:
cursor.execute("SELECT version();")
print(f"Server version: {cursor.fetchone()} ")
connection.close()
print('[INFO] PostgreSQL connection closed')
except Exception as _ex:
print('[INFO] Error while working with postgreSQL', _ex)
UPD: Более корректный вариант предложил @Alpensin, только там не понятно, куда вставить print про закрытие, чтобы он был выведен точно после закрытия :)
import psycopg2
from contextlib import closing
try:
with closing(psycopg2.connect()) as connection:
with connection.cursor() as cursor:
cursor.execute("SELECT version();")
print(f"Server version: {cursor.fetchone()} ")
except Exception as _ex:
print('[INFO] Error while working with postgreSQL', _ex)