最佳答案
我有一个 python 脚本,它在一个共享的 linux 主机上查询 MySQL 服务器。出于某种原因,对 MySQL 的查询经常返回“ server has gone away”错误:
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
如果紧接着再次尝试查询,通常会成功。因此,我想知道在 python 中是否有一种合理的方法来尝试执行查询,如果失败,就再次尝试,最多可以尝试固定数量的查询。也许我会希望它在完全放弃之前尝试5次。
我的代码是这样的:
conn = MySQLdb.connect(host, user, password, database)
cursor = conn.cursor()
try:
cursor.execute(query)
rows = cursor.fetchall()
for row in rows:
# do something with the data
except MySQLdb.Error, e:
print "MySQL Error %d: %s" % (e.args[0], e.args[1])
显然,我可以通过另一个尝试来实现这个目标,但是这个方法难以置信的丑陋,而且我有一种感觉,一定有一个体面的方法来实现这个目标。