我在一个 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 中的连接可以是只读的。
conn.commit()
,而不是将autocommit
设置为True
。 - Clodoaldo Neto