sql >> Database teknologi >  >> RDS >> Mysql

Hvordan aktiverer man MySQL-klientens automatiske genforbindelse med MySQLdb?

Jeg løste dette problem ved at oprette en funktion, der omslutter cursor.execute() metode, da det var det, der udløste MySQLdb.OperationalError undtagelse. Det andet eksempel ovenfor antyder, at det er conn.cursor() metode, der kaster denne undtagelse.

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


  1. Bestem, hvilken MySQL-konfigurationsfil, der bruges

  2. Typer af SQL JOIN

  3. Skaleringsløsninger til MySQL (replikering, klyngedannelse)

  4. Database-sikkerhedskopier - Sammenligning af MariaDB Mariabackup og Percona Xtrabackup