sql >> Database >  >> RDS >> Mysql

Hoe MySQL-client automatisch opnieuw verbinden met MySQLdb inschakelen?

Ik heb dit probleem opgelost door een functie te maken die de cursor.execute() . omhult methode, want dat is wat de MySQLdb.OperationalError veroorzaakte uitzondering. Het andere voorbeeld hierboven impliceert dat het de conn.cursor() . is methode die deze uitzondering genereert.

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. Dynamische Oracle Pivot_In_Clause

  2. ORA-01008:niet alle variabelen zijn gebonden. Ze zijn gebonden

  3. Geparametriseerde query in Oracle-problemen

  4. Recursieve categorieën met een enkele zoekopdracht?