心理医生`连接.通知`包含属于以前查询而不是最新查询的通知

2024-09-11 00:37:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我在virtualenv中使用python2.7.3和psycopg2.5.4连接到debian7.6amd64上的postgresql9.1.13。在

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

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

但这些通知似乎总是与以前的查询有关。我不确定我的程序中是否有bug,或者Psycopg懒散地获取通知。有时在一个查询之后会打印出许多通知,而且它们都与之前的许多查询相关,这就让人怀疑,通知是由psycopg在随机时间从服务器中批量获取的。在

我使用LIPBQXX C++库连接到同一个DB,并且我可以登记处理的通知处理程序,按预期的时间工作。所以问题不会出在发出通知的DB触发器上。在

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

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


Tags: 对象closeexecutedb属性virtualenvpostgresql时间
1条回答
网友
1楼 · 发布于 2024-09-11 00:37:55

很抱歉,我的代码有缺陷,由于异常,执行没有到达打印通知并从列表中弹出的部分。所以它们会堆积起来,在没有引发异常的查询之后打印出来。在

相关问题 更多 >