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

Python:la connessione MySQL è aperta, ma non è possibile creare il cursore

Vorrei cambiare l'istruzione che controlla se la connessione è aperta per entrambi controllare se conn non è nessuno e se la connessione è aperta. E poiché esegui sempre setValue funzione Ti consiglierei di chiamare la connessione all'interno di __init__ funzione.

class Sample:
  conn = None

  def __init__(self):
    self.connect()
    self.value = self.setValue()
    self.close()

  def connect(self):
    self.conn = MySQLdb.connect(...)

  def close(self):
    if self.conn:
       self.conn.close()

  def setValue(self):
    if not self.conn and not self.conn.open:
       self.connect()
    cursor = self.conn.cursor()

Inoltre, ricorda che con Python MySQL Connector devi chiamare commit dopo aver eseguito un'istruzione di inserimento o aggiornamento.

cur =  self.conn.cursor()
cur.execute("...")
self.conn.commit()