Я учусь использовать базу данных PostgreSQL с модулем Python (3.6) psycopg2. У меня проблемы с определением, при каких обстоятельствах мне следует вручную закрывать свои соединения.
Согласно документам :
в отличие от файловых объектов или других ресурсов, выход из соединения с
блок не закрывает соединение, а только связанную транзакцию
с ним: соединение может быть использовано в более чем с оператором и
каждый с блоком эффективно упакован в отдельную транзакцию
Но потом приходит пример кода:
conn = psycopg2.connect(DSN)
with conn:
with conn.cursor() as curs:
curs.execute(SQL1)
with conn:
with conn.cursor() as curs:
curs.execute(SQL2)
conn.close()
Однако я привык видеть управление контекстом с помощью with-as, т.е. что-то вроде
with psycopg2.connect(DSN) as conn:
with conn.cursor() as curs:
curs.execute(SQL)
Это разумный подход, или все еще будет открытое соединение после выполнения вышеуказанного? Если это так, как мне закрыть его, поскольку «conn» больше не существует?