![](/img/trans.png)
[英]Python: how to pass string to postgres command using psycopg2
[英]How to abort / rollback a pending postgres transaction using python / psycopg2?
我正在使用 python (psycopg2) 和 pycharm 來查詢 postgres 數據庫中的數據。 我想中止和回滾一個耗時過長的事務。 由於我缺少查詢編寫技巧,因此花費的時間太長。
我可以停止 python 腳本的執行,但 postgres 事務仍在進行中。
如何使用 python/psycopg2 中止/回滾待處理的 postgres 事務?
上面有幾個問題。 對於取消 python 腳本並想要中止查詢的情況,則:
https://www.postgresql.org/docs/current/functions-admin.html#FUNCTIONS-ADMIN-SIGNAL
pg_cancel_backend(pid int) boolean 取消后端的當前查詢。 如果調用角色是其后端被取消的角色的成員或調用角色已被授予 pg_signal_backend,這也是允許的,但是只有超級用戶可以取消超級用戶后端。
pg_terminate_backend(pid int) boolean 終止后端。 如果調用角色是其后端正在終止的角色的成員,或者調用角色已被授予 pg_signal_backend,這也是允許的,但是只有超級用戶才能終止超級用戶后端。
閱讀完整部分以了解所有詳細信息。 在任何情況下,您都可以使用這些函數來終止查詢。
為了在一段時間后中止交易,我會看:
https://www.postgresql.org/docs/current/runtime-config-client.html
statement_timeout(整數)
中止任何花費超過指定時間的語句。 如果 log_min_error_statement 設置為 ERROR 或更低,則也會記錄超時的語句。 如果此值未指定單位,則以毫秒為單位。 零值(默認值)禁用超時。
超時是從命令到達服務器的時間開始測量的,直到服務器完成為止。 在擴展查詢協議中,當任何與查詢相關的消息(解析、綁定、執行、描述)到達時,超時開始運行,並在執行或同步消息完成時取消。
不建議在 postgresql.conf 中設置 statement_timeout,因為它會影響所有會話。
您可以在運行相關查詢之前使用SET設置一個值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.