Maison > Article > base de données > Comment activer la reconnexion automatique des clients dans MySQLdb ?
MySQLdb : Activation de la reconnexion automatique du client
Dans MySQLdb, établir la reconnexion automatique de la connexion n'est pas une tâche simple par rapport à l'extension MySQL de PHP. Cet article aborde ce problème et propose une solution efficace.
Contexte
Le maintien de connexions actives avec MySQL est crucial dans les applications Web. Des problèmes de réseau, des délais d'attente ou des redémarrages de bases de données peuvent perturber ces connexions, entraînant des erreurs. Pour gérer de telles situations, les clients de base de données doivent être équipés de capacités de reconnexion automatique.
Solution MySQLdb
MySQLdb ne fournit pas d'option directe de reconnexion automatique comme MYSQL_OPT_RECONNECT de MySQL. . Cependant, une solution de contournement consiste à encapsuler la méthode curseur.execute(), qui déclenche généralement des erreurs de connexion lorsque MySQL est inaccessible.
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
Cette méthode crée un Classe DB avec une méthode connect() pour établir la connexion initiale. La méthode query() tente d'exécuter une requête à l'aide d'un curseur. Si une erreur de connexion se produit (AttributeError ou MySQLdb.OperationalError), il se reconnecte automatiquement en appelant connect() puis retente la requête avec un nouveau curseur. Cette approche garantit que votre application peut gérer les problèmes de connexion temporaires et maintenir un accès transparent à 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!