【发布时间】:2016-08-14 02:31:01
【问题描述】:
我在 PostgreSQL 9.1 服务器上有一张这样的表:
CREATE TABLE foo(id integer PRIMARY KEY);
在一个带有 psycopg2 (≥ 2.4.2) 的交互式 Python shell 中,我可能会启动一个连接和游标,然后查询这个表:
import psycopg2
conn = psycopg2.connect('dbname=...')
curs = conn.cursor()
curs.execute('SELECT * FROM foo;')
curs.fetchall()
但是,如果我尝试修改表格:
ALTER TABLE foo ADD COLUMN bar integer;
这会导致虚拟死锁,直到我从 Python 执行 conn.close()。
如何启动与 psycopg2 的简单连接,以防止它在其他地方创建由 DDL 更改引起的死锁? Python 中的连接可以是只读的。
【问题讨论】:
标签: python postgresql postgresql-9.1 psycopg2 database-deadlocks