Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak włączyć automatyczne ponowne łączenie klienta MySQL z MySQLdb?

Rozwiązałem ten problem, tworząc funkcję, która otacza cursor.execute() metoda, ponieważ to właśnie rzuciło MySQLdb.OperationalError wyjątek. Drugi przykład powyżej sugeruje, że jest to conn.cursor() metoda, która zgłasza ten wyjątek.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaka jest domyślna nazwa ograniczenia w MySQL?

  2. Jak dodawać i odejmować dzień, miesiąc, rok za pomocą MySql Query

  3. Jak skonfigurować zdalne połączenie MySQL

  4. Laravel Eloquent kontra konstruktor zapytań — dlaczego używać eloquent do zmniejszenia wydajności?

  5. Jak wybrać jedną z dwóch tabel w MySQL, nawet jeśli nie wszystkie wiersze w jednej tabeli mają korespondentów w drugiej?