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.
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