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, die anzupassen Verhalten des Cursorobjekts. Der folgende Codeausschnitt demonstriert 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
Erläuterung
Dieser Code definiert eine benutzerdefinierte query()-Methode, die die Cursor.execute()-Methode umschließt. Wenn ein Verbindungsfehler auftritt (entweder ein AttributeError oder ein 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.
Das obige ist der detaillierte Inhalt vonWie verbinde ich MySQL-Clients in Python erneut mit MySQLdb und MySQL Connector/Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!