Maison  >  Article  >  base de données  >  Comment activer la reconnexion automatique du client dans MySQLdb pour les connexions persistantes en Python ?

Comment activer la reconnexion automatique du client dans MySQLdb pour les connexions persistantes en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-22 12:06:11726parcourir

How to Enable Automatic Client Re-connection in MySQLdb for Persistent Connections in Python?

MySQLdb : activation de la reconnexion automatique du client

En Python, la bibliothèque MySQLdb fournit un moyen pratique d'interagir avec les bases de données MySQL. Un défi courant consiste à maintenir une connexion persistante malgré des interruptions temporaires.

Pour résoudre ce problème, une solution existe en PHP impliquant des options MySQL, mais les utilisateurs ont du mal à la répliquer avec MySQLdb.

Solution :

La clé pour activer la reconnexion automatique dans MySQLdb réside dans l'encapsulation du curseur.execute() méthode.

Le code Python suivant illustre une solution :

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

# Example usage
db = DB()
sql = "SELECT * FROM foo"
cur = db.query(sql)
# Sleep for a long time to simulate connection timeout
time.sleep(60 * 60 * 24)
cur = db.query(sql)
# Connection is still valid and usable

Dans cette approche, la fonction query() gère la connexion au nom de l'utilisateur, garantissant que toute connexion perdue est rétablie. établi automatiquement.

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