Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie aktiviere ich die automatische Wiederverbindung des MySQL-Clients mit MySQLdb?

Ich habe dieses Problem gelöst, indem ich eine Funktion erstellt habe, die cursor.execute() umschließt -Methode, da dies den MySQLdb.OperationalError ausgelöst hat Ausnahme. Das andere obige Beispiel impliziert, dass es sich um conn.cursor() handelt Methode, die diese Ausnahme auslöst.

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