sql >> Databasteknik >  >> RDS >> Mysql

Hur aktiverar jag MySQL-klienten automatiskt återansluta med MySQLdb?

Jag löste det här problemet genom att skapa en funktion som omsluter cursor.execute() metod eftersom det var det som skickade MySQLdb.OperationalError undantag. Det andra exemplet ovan antyder att det är conn.cursor() metod som kastar detta undantag.

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. När SQLiteOpenHelper onCreate-metoden anropas?

  2. Online kontra offline säkerhetskopiering

  3. SQL VÄLJ AVG

  4. Långsam enkel uppdateringsfråga på PostgreSQL-databas med 3 miljoner rader