Psycopg`connection.notices`包含属于先前查询而不是最新查询的通知

时间:2014-10-04 13:11:49

标签: python sql postgresql psycopg2

我在virtualenv中使用Python 2.7.3和Psycopg 2.5.4连接到Debian 7.6 amd64上的PostgreSQL 9.1.13。

我创建的连接对象的

notices属性始终是它应该包含的PostgreSQL通知中的一个或多个查询。在我执行的每个查询(cursor.execute()conn.commit()cursor.close())之后,我运行:

while conn.notices:
    print(conn.notices.pop(0))

但通知似乎总是与以前的查询有关。我不确定我的程序中是否有错误或者Psycopg懒得提醒通知。有时很多通知会在一次查询后打印出来,并且它们都与之前的一些查询有关,这些查询引起了人们怀疑通过psycopg在随机时间从服务器批量提取通知。

我已经使用libpqxx C ++库连接到同一个数据库,我可以注册进行处理的通知处理程序可以及时按预期工作。所以问题不在于发出通知的数据库触发器。

psycopg连接处于ISOLATION_LEVEL_READ_COMMITTEDautocommit=False同步模式。

任何有助于解决此问题的建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

抱歉,我的代码是错误的,并且由于例外,执行没有到达通知被打印并从列表中弹出的部分。因此,在没有提出异常的查询后,他们会堆积起来并打印出来。