データベース接続の領域では、中断のないデータ アクセスのために永続的な接続を維持することが重要です。 MySQL データベースとインターフェースするための人気のある Python ライブラリである MySQLdb は、接続が失敗した場合にクライアントを自動的に再接続する方法を提供します。
以前のバージョンで自動再接続を有効にする
MySQLdb の以前のバージョンでは、以下に示すように、自動再接続機能は mysql_options() 関数を通じてアクティブ化できました。
my_bool reconnect = 1 mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect)
ただし、MySQL Connector/Python の出現により、基礎となる実装が変更され、このアプローチは適用できなくなりました。
次の解決策MySQL Connector/Python
MySQL Connector/Python で自動再接続を実現するには、Cursor オブジェクトの動作をカスタマイズする必要があります。次のコード スニペットは、このアプローチを示しています。
import MySQLdb class DB: conn = None def connect(self): self.conn = MySQLdb.connect() def query(self, sql): try: cursor = self.conn.cursor() cursor.execute(sql) except (AttributeError, MySQLdb.OperationalError): self.connect() cursor = self.conn.cursor() cursor.execute(sql) return cursor db = DB() sql = "SELECT * FROM foo" cur = db.query(sql) # wait a long time for the Mysql connection to timeout cur = db.query(sql) # still works
説明
このコードは、Cursor.execute() メソッドをラップするカスタム query() メソッドを定義します。接続エラー (AttributeError または MySQLdb.OperationalError) が発生した場合、query() メソッドはデータベースへの再接続を試行し、クエリを再実行します。
この自動再接続メカニズムをCursor オブジェクトを使用すると、MySQL 接続が断続的に失われた場合でも、Python スクリプトが動作し続けることを保証できます。このアプローチは、データベース接続を維持するためのより堅牢で信頼性の高い手段を提供します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3