実際にMySQLdbでは、よりエレガントな方法では、接続がアクティブかどうかをチェックしません。接続がアクティブであるかどうかをチェックすると、mysqlサーバが接続を滑らかに閉じる場合にも例外が発生します。それを残してtry exceptブロックで再接続メカニズムを使用するだけです。
MySQLdbにはエラーが発生したときに使用されるerror.pyがconnection.pyにあります。
def defaulterrorhandler(connection, cursor, errorclass, errorvalue):
"""
If cursor is not None, (errorclass, errorvalue) is appended to
cursor.messages; otherwise it is appended to
connection.messages. Then errorclass is raised with errorvalue as
the value.
You can override this with your own error handler by assigning it
to the instance.
"""
error = errorclass, errorvalue
if cursor:
cursor.messages.append(error)
else:
connection.messages.append(error)
del cursor
del connection
raise errorclass, errorvalue
「del connection
」を参照してください。接続を終了し、接続をなしに設定します。それでエラーを起こさせて、その後我々は世界を再構築します。
したがって、Mysqlがなくなったなどの問題を処理するためにtry exceptブロックに再接続メカニズムを実装するだけで済みます。
私はmysqlの設定権を有効にして再接続する必要がありますか? – Cijo
私はそれをしない。デフォルトであるかもしれません。 – phd
1.2.2の新機能:オプションの再接続パラメータを受け入れます。 Trueの場合、 クライアントは再接続を試みます。この設定は です。デフォルトでは、これはMySQL <5.0.3でオンになり、それ以降は でオフになります。 – Cijo