我可能是错的(或误解你的问题:)),但我相信一个连接相关的异常被抛出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