我可能是錯的(或誤解你的問題:)),但我相信一個連接相關的異常被拋出MySQLdb.connect()
。對於MySQLdb,捕獲的例外是MySQLdb.Error
。因此,我建議移動try
區塊內的db
安裝程序,並捕獲適當的異常(MySQLdb.Error
)。此外,作爲@JohnMee提到,fetchone()
返回None如果沒有結果,所以這應該工作:
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 2012-07-31 07:41:35
*爲什麼*你想*測試*連接?如果測試失敗,你會怎麼做? – 2012-07-31 07:42:29
我正在寫數據庫訪問方法的單元測試用例。所以想在數據庫訪問失敗的時候去除這種情況。 – Nemo 2012-07-31 07:43:28