मैं गलत हो सकता हूं (या आपके प्रश्न को गलत व्याख्या कर रहा हूं :)), लेकिन मेरा मानना है कि कनेक्शन से संबंधित अपवाद MySQLdb.connect()
पर फेंक दिया गया है। MySQLdb के साथ, पकड़ने का अपवाद MySQLdb.Error
है। इसलिए, मैं try
ब्लॉक के अंदर db
सेटअप को स्थानांतरित करने और उचित अपवाद (MySQLdb.Error
) को पकड़ने का सुझाव दूंगा। इसके अलावा, जैसा @JohnMee का उल्लेख है, fetchone()
कोई भी अगर वहाँ कोई परिणाम नहीं हैं वापस आ जाएगी, तो यह काम करना चाहिए:
try:
db = MySQLdb.connect(self.server, self.user,
self.passwd, self.schema)
cursor = db.cursor()
cursor.execute("SELECT VERSION()")
results = cursor.fetchone()
# Check if anything at all is returned
if results:
return True
else:
return False
except MySQLdb.Error:
print "ERROR IN CONNECTION"
return False
आप कनेक्शन के बारे में परवाह नहीं है और सिर्फ क्वेरी के निष्पादन का परीक्षण करने के लिए देख रहे हैं, मुझे लगता है कि आप अपने अपवाद में try
बाहर कनेक्शन सेटअप छोड़ सकता लेकिन शामिल MySQLdb.Error
, इस प्रकार है शायद के रूप में:
db = MySQLdb.connect(self.server, self.user,
self.passwd, self.schema)
cursor = db.cursor()
try:
cursor.execute("SELECT VERSION()")
results = cursor.fetchone()
# Check if anything at all is returned
if results:
return True
else:
return False
except MySQLdb.Error, e:
print "ERROR %d IN CONNECTION: %s" % (e.args[0], e.args[1])
return False
यह कम से कम आप क्यों यह असफल के एक अधिक विस्तृत कारण देना होगा।
कोड में त्रुटि को सही किया गया। यह जानने की आवश्यकता है कि यह परीक्षण करने का सही तरीका है या नहीं? – Nemo
* क्यों * आप * कनेक्ट * कनेक्टिविटी करना चाहते हैं? परीक्षण विफल होने पर आप क्या करते हैं? –
मैं डीबी एक्सेस विधियों के लिए यूनिट टेस्टकेस लिख रहा हूं। इसलिए जब डेटाबेस पहुंच विफल हो जाती है तो मामले को बाहर निकालना चाहते हैं। – Nemo