在資料庫連線領域,維持持久連線對於不間斷的資料存取至關重要。 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 中實作自動重連,需要自訂 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() 方法會嘗試重新連線到資料庫,然後重新執行查詢。
透過在遊標對象,可以確保你的Python腳本即使MySQL連線間歇性遺失也能繼續運作。這種方法提供了一種更強大、更可靠的方式來維護資料庫連線。
以上是如何使用 MySQLdb 和 MySQL Connector/Python 在 Python 中重新連接 MySQL 用戶端?的詳細內容。更多資訊請關注PHP中文網其他相關文章!