„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie verbinde ich MySQL-Clients in Python erneut mit MySQLdb und MySQL Connector/Python?

Wie verbinde ich MySQL-Clients in Python erneut mit MySQLdb und MySQL Connector/Python?

Veröffentlicht am 15.11.2024
Durchsuche:927

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

Wiederverbinden von MySQL-Clients mit MySQLdb

Im Bereich der Datenbankkonnektivität ist die Aufrechterhaltung einer dauerhaften Verbindung für einen unterbrechungsfreien Datenzugriff von entscheidender Bedeutung. MySQLdb, eine beliebte Python-Bibliothek für die Verbindung mit MySQL-Datenbanken, bietet eine Möglichkeit, Clients bei Verbindungsfehlern automatisch wieder zu verbinden.

Automatische Wiederverbindung in früheren Versionen aktivieren

In früheren Versionen von MySQLdb konnte die automatische Wiederverbindungsfunktion über die Funktion mysql_options() aktiviert werden, wie unten gezeigt:

my_bool reconnect = 1
mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect)

Mit der Einführung von MySQL Connector/Python hat sich jedoch die zugrunde liegende Implementierung geändert, und dieser Ansatz ist nicht mehr anwendbar.

Lösung für MySQL Connector/Python

Um eine automatische Wiederverbindung in MySQL Connector/Python zu erreichen, ist es notwendig, das Verhalten des Cursor-Objekts anzupassen. Der folgende Codeausschnitt veranschaulicht diesen Ansatz:

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

Erklärung

Dieser Code definiert eine benutzerdefinierte query()-Methode, die die Cursor.execute()-Methode umschließt. Wenn ein Verbindungsfehler auftritt (entweder ein AttributeError oder MySQLdb.OperationalError), versucht die query()-Methode, die Verbindung zur Datenbank wiederherzustellen und führt dann die Abfrage erneut aus.

Durch die Implementierung dieses automatischen Wiederverbindungsmechanismus innerhalb der Mit dem Cursor-Objekt können Sie sicherstellen, dass Ihre Python-Skripte auch dann weiter ausgeführt werden können, wenn die MySQL-Verbindung zeitweise unterbrochen wird. Dieser Ansatz bietet eine robustere und zuverlässigere Möglichkeit zur Aufrechterhaltung der Datenbankkonnektivität.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3