Maison > Article > base de données > Comment reconnecter les clients MySQL en Python avec MySQLdb et MySQL Connector/Python ?
Dans le domaine de la connectivité des bases de données, le maintien d'une connexion persistante est crucial pour un accès ininterrompu aux données. MySQLdb, une bibliothèque Python populaire pour l'interface avec les bases de données MySQL, fournit un moyen de reconnecter automatiquement les clients en cas d'échec de connexion.
Activation de la reconnexion automatique dans les versions précédentes
Dans les versions antérieures de MySQLdb, la fonctionnalité de reconnexion automatique pouvait être activée via la fonction mysql_options(), comme indiqué ci-dessous :
my_bool reconnect = 1 mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect)
Cependant, avec l'avènement de MySQL Connector/Python, l'implémentation sous-jacente a changé , et cette approche n'est plus applicable.
Solution pour MySQL Connector/Python
Pour réaliser la reconnexion automatique dans MySQL Connector/Python, il est nécessaire de personnaliser le Comportement de l'objet curseur. L'extrait de code suivant illustre cette approche :
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
Explication
Ce code définit une méthode query() personnalisée qui encapsule la méthode Cursor.execute(). Si une erreur de connexion se produit (soit une AttributeError, soit une MySQLdb.OperationalError), la méthode query() tentera de se reconnecter à la base de données puis réexécutera la requête.
En implémentant ce mécanisme de reconnexion automatique dans le Objet Curseur, vous pouvez vous assurer que vos scripts Python peuvent continuer à fonctionner même si la connexion MySQL est perdue par intermittence. Cette approche fournit un moyen plus robuste et fiable de maintenir la connectivité de la base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!