Я использую pyodbc в Linux с FreeTDS для подключения к 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?