पर कॉल के लिए pyodbc.connect टाइमआउट तर्क को अनदेखा किया गया है, मैं SQL सर्वर 2005 से कनेक्ट करने के लिए FreeTDS के साथ लिनक्स पर pyodbc का उपयोग कर रहा हूं। मैंने देखा है कि मेरे कनेक्शन के लिए टाइमआउट तर्क मेरे प्रश्नों से सम्मानित नहीं किया जा रहा है।SQL सर्वर
जब मैं निम्न चलाता हूं तो मैं कर्सर.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
क्या पीओडीबीसी और एसक्यूएल सर्वर का उपयोग कर क्वेरी टाइमआउट को मजबूर करने का कोई बेहतर तरीका है?
मैं precendence द्वारा cravori का जवाब स्वीकार कर लिया है, तब तक आप एक अधिक विस्तृत विवरण के साथ एक ही समाधान दे। उसके लिए धन्यवाद। – ChrisGuest
@ChrisGuest Understood। 'टाइमआउट' वैरिएबल भी मेरे लिए नई जानकारी है, और यह मेरे लिए तत्काल स्पष्ट नहीं था कि इसका लाभ उठाने के लिए क्या किया जाना चाहिए। उम्मीद है कि यह उन लोगों की मदद करेगा जो इसे पार करते हैं और मेरे जैसे घने हैं :-) – Bryan