擅长:python、mysql、java
<p>您可以捕获操作错误异常并重新连接。</p>
<pre><code>from MySQLdb import OperationalError
try:
my_sql_operation()
except OperationalError as e:
#do what you want to do on the error
reconnect()
print e
</code></pre>
<p>如果在运行查询之前明确希望检查连接是否已断开,则可以运行测试查询来检查是否发生异常。</p>
<p>我不确定在什么情况下会引发操作错误。但是如果您只想捕获<code>MySQL server has gone away</code>错误,那么可以这样做。</p>
<pre><code>from MySQLdb import OperationalError
try:
my_sql_operation()
except OperationalError as e:
if 'MySQL server has gone away' in str(e):
#do what you want to do on the error
reconnect()
print e
else:
raise e()
</code></pre>
<p>它将只捕获“消失”错误,并允许由于其他原因引发操作错误异常。</p>
<p><strong>更新</strong></p>
<p>正如我在评论中所说,我的查询功能如下:</p>
<pre><code>def fetch_data(query):
try:
cursor = conn.Cursor()
cursor.execute(query)
return cursor.fetchall()
except OperationalError as e:
reconnect()
print 'reconnecting and trying again...'
fetch_data(query)
</code></pre>
<p>这只是一个例子,可能不适合你的情况。我想说的是,对于不同的事情有不同的功能会更好,这样你就可以轻松地处理这些情况。</p>