首頁 >資料庫 >mysql教程 >如何使用 MySQLdb 和 MySQL Connector/Python 在 Python 中重新連接 MySQL 用戶端?

如何使用 MySQLdb 和 MySQL Connector/Python 在 Python 中重新連接 MySQL 用戶端?

Patricia Arquette
Patricia Arquette原創
2024-11-13 14:23:02767瀏覽

How to Reconnect MySQL Clients in Python with MySQLdb and MySQL Connector/Python?

重新連接 MySQL 用戶端與 MySQLdb

在資料庫連線領域,維持持久連線對於不間斷的資料存取至關重要。 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn