我在虚拟环境中使用Python2.7.3和精神病学2.5.4连接到Debian7.6 PostgreSQL上的amd64 9.1.13。
我创建的连接对象的notices属性始终是它应该包含的PostgreSQL通知中的一个或多个查询。在执行每个查询(cursor.execute()、conn.commit()和cursor.close())之后,我运行:
while conn.notices:
print(conn.notices.pop(0))但这些通知似乎总是与以前的查询有关。我不确定我的程序中是否有一个bug,或者精神病学会懒洋洋地获取注意。有时,许多通知在一个查询之后就会被打印出来,并且它们都与以前的许多查询相关,这就引起了这样的怀疑:通知是在一个随机时间从服务器上大量获取的。
我已经使用libpqxx C++库连接到相同的DB,并且我可以注册处理的通知处理程序,及时和按预期工作。所以问题不可能发生在发出通知的DB触发器上。
内核连接处于ISOLATION_LEVEL_READ_COMMITTED和autocommit=False同步模式。
如有任何有助于解决这一问题的建议,将不胜感激。
发布于 2014-10-04 14:12:10
对不起,我的代码错误,执行没有到达的部分,通知被打印出来,并弹出列表,因为例外。这样,它们就会堆积起来,并在查询后打印出来,而这些查询不会引发异常。
https://stackoverflow.com/questions/26193162
复制相似问题