python – 如何在psycopg2连接上检查打开的事务?

如何在
psycopg2连接上检查打开的事务?我打算将它添加到我的单元/功能测试,因为Python的DB API使用隐式事务. 最佳答案 您可以检查连接的
status属性:

from psycopg2.extensions import STATUS_BEGIN, STATUS_READY

if conn.status == STATUS_READY:
    print("No transaction in progress.")
elif conn.status == STATUS_BEGIN:
    print("A transaction is in progress.")

或者,可以使用connection.get_transaction_status()获得transaction status.

要手动检查正在进行的事务,您可以使用PostgreSQL的statistics collector

SELECT * FROM pg_stat_activity WHERE state = 'idle in transaction';
点赞