2010-08-07 22 views
2

有沒有辦法讓用戶在python中停止執行sql查詢,如果需要很長時間?我正在考慮使用帶有取消按鈕的進度條,但是我想知道是否有辦法以一種乾淨的方式來阻止它,而不是突然殺死相關的線程? (我用兩個pysqlite2和MySQLdb的包)在Python中停止SQL查詢

+1

我想你會更好解決爲什麼查詢花費這麼長時間 – 2010-08-07 17:54:40

+0

@OMG_Ponies:通常情況下,查詢並不需要太多的時間,但例如,我有一個查詢需要超過100秒,涉及到大約一百萬行的排序和分組。 – banx 2010-08-07 18:32:39

回答

3

我看到的唯一的解決辦法是讓進程ID:

SHOW PROCESSLIST; 

,並殺死它:

KILL <thread_id>; 

我會執行這些命令MySQLdb的。

但是,你應該小心回滾。例如見: If I stop a long running query, does it rollback?

希望它有助於

+0

這是否被視爲終止查詢的「乾淨」方式? – banx 2010-08-07 19:16:44