sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo habilitar la reconexión automática del cliente MySQL con MySQLdb?

Resolví este problema creando una función que envuelve el cursor.execute() ya que eso es lo que arrojaba el MySQLdb.OperationalError excepción. El otro ejemplo anterior implica que es el conn.cursor() método que arroja esta excepción.

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