MySQLdb:啟用自動客戶端重新連線
在MySQLdb 中,與PHP 的MySQL 擴充功能相比,建立連線自動重新連線並不是一項簡單的任務。本文解決了這個問題並提供了一個可行的解決方案。
背景
在 Web 應用程式中保持與 MySQL 的活動連線至關重要。網路問題、逾時或資料庫重新啟動可能會中斷這些連接,從而導致錯誤。為了處理這種情況,資料庫客戶端應該配備自動重連功能。
MySQLdb 解決方案
MySQLdb 沒有像 MySQL 的 MYSQL_OPT_RECONNECT 那樣提供自動重連的直接選項。但是,解決方法包括包裝cursor.execute()方法,該方法通常會在MySQL無法存取時觸發連線錯誤。
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
說明
此方法建立一個DB 類別使用 connect() 方法建立初始連線。 query() 方法嘗試使用遊標執行查詢。如果發生連接錯誤(AttributeError 或 MySQLdb.OperationalError),它會透過呼叫 connect() 自動重新連接,然後使用新遊標重試查詢。這種方法可確保您的應用程式可以處理臨時連接問題並保持無縫的資料庫存取。
以上是如何在 MySQLdb 中啟用自動客戶端重新連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!