Sto utilizzando pyodbc su Linux con FreeTDS per connettersi a SQL Server 2005. Ho notato che l'argomento di timeout della mia connessione non viene rispettato dalle mie query.L'argomento timeout pyodbc.connect viene ignorato per le chiamate a SQL Server
Quando si esegue quanto segue, mi aspetto di vedere gli errori di timeout dopo entrambe le chiamate 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'
Invece ottengo questa uscita. Indica che la prima query db richiede più di 7,5 secondi e la seconda chiamata impiega 30 secondi senza generare un timeout.
(808432.0,)
7.56196093559
OK
Esiste un modo migliore per imporre un timeout di query utilizzando pyodbc e SQL Server?
Mentre ho accettato la risposta di cravori in base alla precendenza, fornisci la stessa soluzione con una spiegazione più dettagliata. Grazie per quello. – ChrisGuest
@ChrisGuest capito. Anche la variabile 'timeout' è nuova informazione per me, e non mi è apparso immediatamente chiaro che cosa doveva essere fatto per trarne vantaggio. Speriamo che questo possa aiutare coloro che lo attraversano e sono densi come me :-) – Bryan