Maison  >  Article  >  base de données  >  Comment reconnecter les clients MySQL en Python avec MySQLdb et MySQL Connector/Python ?

Comment reconnecter les clients MySQL en Python avec MySQLdb et MySQL Connector/Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-13 14:23:02682parcourir

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

Reconnecter les clients MySQL avec MySQLdb

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn