У меня есть таблица на 9.1 сервер PostgreSQL, как это:Как предотвратить psycopg2 блокировки таблицы
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;
это запускает виртуальный deadl ock, пока я не сделаю conn.close()
от Python.
Как я могу начать простую связь с psycopg2, которая мешает ему создавать взаимоблокировки, вызванные изменениями DDL в другом месте? Соединение в Python может быть доступно только для чтения.
Вы также можете просто использовать 'conn.commit()' вместо установки 'autocommit'' True' –