Nem*_*emo 13 python mysql-python
我通过MySQLdb库从python访问MySQL数据库.我正在尝试测试数据库连接,如下所示.
db = MySQLdb.connect(self.server, self.user,
self.passwd, self.schema)
cursor = db.cursor()
try:
cursor.execute("SELECT VERSION()")
results = cursor.fetchone()
ver = results[0]
if (ver is None):
return False
else:
return True
except:
print "ERROR IN CONNECTION"
return False
Run Code Online (Sandbox Code Playgroud)
这是在编写单元测试用例时应该测试连接性的正确方法吗?如果有更好的方法,请指教!
我可能是错的(或误解你的问题:)),但我相信一个与连接相关的异常被抛出MySQLdb.connect().使用MySQLdb,捕获的异常是MySQLdb.Error.因此,我建议移动块db内的设置try并捕获正确的异常(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
Run Code Online (Sandbox Code Playgroud)
如果您不关心连接并且只是想测试查询的执行,我想您可以将连接设置保留在您的异常之外,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
Run Code Online (Sandbox Code Playgroud)
这至少可以为您提供更详细的原因,说明它失败的原因.
| 归档时间: |
|
| 查看次数: |
31378 次 |
| 最近记录: |