我在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_COMMITTED
和autocommit=False
同步模式。在
任何有助于解决这一问题的建议都将不胜感激。在
很抱歉,我的代码有缺陷,由于异常,执行没有到达打印通知并从列表中弹出的部分。所以它们会堆积起来,在没有引发异常的查询之后打印出来。在
相关问题 更多 >
编程相关推荐