У меня есть таблица на сервере PostgreSQL 9.1:
CREATE TABLE foo(id integer PRIMARY KEY);
В интерактивной оболочке Python с psycopg2 (≥ 2.4.2) я мог бы запустить соединение и курсор и запросить эту таблицу:
import psycopg2
conn = psycopg2.connect('dbname=...')
curs = conn.cursor()
curs.execute('SELECT * FROM foo;')
curs.fetchall()
Однако, если я попытаюсь изменить таблицу:
ALTER TABLE foo ADD COLUMN bar integer;
это запускает виртуальный тупик, пока я не сделаю conn.close()
из Python.
Как я могу установить простое соединение с psycopg2, чтобы предотвратить создание взаимоблокировок, вызванных изменениями DDL в другом месте? Соединение в Python может быть только для чтения.