如何在Python中一段时间后取消sql查询

问题描述 投票:0回答:1

看这段代码:

import pyodbc
cnxn = pyodbc.connect(connection_string)
cursor = cnxn.cursor()
cursor.execute(query)
cnxn.commit()

通常这段代码可以正常工作。但有些查询需要无限的时间才能执行。这不是一个Python问题。当我使用 SQL Server Management Studio 执行它们时,我有相同的行为。但当我厌倦了等待时,我可以取消查询。我正在寻找 python 中的模拟可能性。我可以告诉 python 以某种方式尝试大约 10 分钟然后取消吗?我该怎么办?

python sql python-3.x pyodbc
1个回答
0
投票

您可以尝试在子进程中运行 SQL 查询,如果未完成,可以在一段时间后取消该查询。例如:

import pyodbc
from multiprocessing import Process

def worker():
    cnxn = pyodbc.connect(connection_string)
    cursor = cnxn.cursor()
    cursor.execute(query)
    cnxn.commit()

def main():
    p = Process(target=worker)
    p.start()
    # Wait for up to 10 minutes for the process to complete:
    p.join(600)  # 600 seconds
    # Did the process actually complete?
    if p.exitcode is None:
        # The process is still running after 600 second, so:
        p.terminate()  # Kill the process
        print('Process killed')

if __name__ == '__main__':
    main()
© www.soinside.com 2019 - 2024. All rights reserved.