在psycopg2
上,我可以将连接置于只读模式:
connection.set_session(readonly=True)
但我怎么知道连接是否处于只读模式?
答案 0 :(得分:1)
从psycopg2 v2.7开始,您可以使用属性来确定连接是处于只读模式(True
)还是读/写模式(False
)
如果您正在运行早期版本,则可以执行查询:
SHOW transaction_read_only;
对于只读模式,其值为'on'
,对于读/写模式,其值为'off'
。
答案 1 :(得分:-1)
试一试:
conn.set_session(readonly=True)
try:
cursor.execute('create table xyz (a int)')
cursor.execute('drop table xyz')
except psycopg2.InternalError, e:
print e.message
输出:
cannot execute CREATE TABLE in a read-only transaction