gpt4 book ai didi

python - 调用 SQL Server 时忽略 pyodbc.connect 超时参数

转载 作者:太空狗 更新时间:2023-10-29 20:38:11 25 4
gpt4 key购买 nike

我在带有 FreeTDS 的 Linux 上使用 pyodbc 连接到 SQL Server 2005。我注意到我的连接超时参数没有被我的查询接受。

当我运行以下命令时,我希望在两个 cursor.execute 调用之后看到超时错误。

import pyodbc
import time

connString = 'SERVER=dbserver;PORT=1433;DATABASE=db;UID=dbuser;PWD=dbpwd;' + \
'DRIVER=FreeTDS'
cnxn = pyodbc.connect(connString , timeout=3)

cursor = cnxn.cursor()

t1 = time.time()
cursor.execute("SELECT MAX(Qty) FROM big_table WHERE ID<10000005")
print cursor.fetchone()
t2 = time.time()
print t2-t1

cursor.execute("WAITFOR DELAY '00:00:30'")
print 'OK'

相反,我得到了这个输出。表示第一个数据库查询耗时超过 7.5 秒,而第二个调用耗时 30 秒且未引发超时。

(808432.0, )
7.56196093559
OK

是否有使用 pyodbc 和 SQL Server 强制查询超时的更好方法?

最佳答案

添加Connection.timeout变量分配给您的代码。默认为 0(禁用超时),预计以秒为单位。

import pyodbc
import time

connString = 'SERVER=dbserver;PORT=1433;DATABASE=db;UID=dbuser;PWD=dbpwd;' + \
'DRIVER=FreeTDS'
cnxn = pyodbc.connect(connString)
cnxn.timeout = 3
cursor = cnxn.cursor()

t1 = time.time()
cursor.execute("SELECT MAX(Qty) FROM big_table WHERE ID<10000005")
print cursor.fetchone()
t2 = time.time()
print t2-t1

cursor.execute("WAITFOR DELAY '00:00:30'")
print 'OK'

关于python - 调用 SQL Server 时忽略 pyodbc.connect 超时参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12945353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com