Python と mySQL を使用していますが、クエリ間に長い遅延があります。その結果、「MySQL 接続が切断されました」というエラーが表示されます。つまり、wait_timeout を超えています。
これについては、 「MySQL がなくなった」を適切に処理するなどで説明されています。
しかし、これは私の質問に明確に答えるものではありません。
したがって、これを処理するための私のアプローチ-すべてのSQL実行ステートメントをメソッドにラップしました-
def __execute_sql(self,sql,cursor):
try:
cursor.execute(sql)
except MySQLdb.OperationalError, e:
if e[0] == 2006:
self.logger.do_logging('info','DB', "%s : Restarting db" %(e))
self.start_database()
このクエリを呼び出すコードにはいくつかの場所があります。問題は、私もいくつかのカーソルを持っているので、メソッド呼び出しは次のようになります-
self.__execute_sql(sql,self.cursor_a)
self.__execute_sql(sql,self.cursor_b)
等々
データベースが開始された後、クエリを適切に再実行する方法が必要です。呼び出しを if ステートメントでラップし、再実行して、次のようにすることができます。
def __execute_sql(self,sql,cursor):
try:
cursor.execute(sql)
return 1
except MySQLdb.OperationalError, e:
if e[0] == 2006:
self.logger.do_logging('info','DB', "%s : Restarting db" %(e))
self.start_database()
return 0
その後
if (self.__execute_sql(sql,self.cursor_a) == 0):
self.__execute_sql(sql,self.cursor_a)
しかし、これは不格好です。これを行うより良い方法はありますか?ありがとう!!!