2010-01-11 35 views
4

如何取消使用pyscopg2(python Postgres驅動程序)執行查詢語句?在pyscopg2中取消查詢執行

舉個例子,假設我有以下代碼:

import psycopg2 
cnx_string = "something_appropriate" 

conn = psycopg2.connect(cnx_string) 
cur = conn.cursor() 
cur.execute("long_running_query") 

然後我想取消從另一個線程長時間運行查詢的執行 - 我會用什麼方法來連接上調用/遊標對象做到這一點?

回答

4

您可以通過在單獨的連接中調用pg_cancel_backend(pid) PostgreSQL函數來取消查詢。

您可以通過psycopg2的connection.get_backend_pid()方法(可從2.0.8版獲得)瞭解後端的PID以取消。

+1

請注意,發送'pg_cancel_backend(pid)'的用戶必須是超級用戶。 – raphael 2016-08-11 18:53:22

0

psycopg2的異步執行支持已被removed

如果您可以使用py-postgresql及其transactions(它是py3k),則內部實現是異步的並且支持被中斷。

+0

非常感謝 - 不是我想要的答案,但仍然有用。 – jwoolard 2010-01-11 17:59:32

+0

您的鏈接已損壞 – raphael 2016-08-11 18:45:34