在資料庫連接領域,保持持久連接對於不間斷的資料存取至關重要。 MySQLdb 是一個用於連接 MySQL 資料庫的熱門 Python 函式庫,它提供了一種在連線失敗時自動重新連接客戶端的方法。
在先前的版本中啟用自動重新連線
在早期版本的MySQLdb 中,可以透過mysql_options() 函數啟動自動重新連線功能,如下所示:
my_bool reconnect = 1 mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect)
但是,隨著MySQL Connector/Python的出現,底層實作發生了變化,這種方式不再適用。
解決方案MySQL Connector/Python
要在MySQL Connector/Python中實現自動重連,需要自訂遊標物件的行為。以下程式碼片段示範了這個方法:
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() 方法會嘗試重新連線到資料庫,然後重新執行查詢。
透過在遊標對象,可以保證你的Python腳本即使MySQL連線間歇性遺失也能繼續運作。這種方法提供了一種更強大、更可靠的方法來維護資料庫連線。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3