sql >> Base de Datos >  >> RDS >> Mysql

Python:la conexión MySQL está abierta, pero no puede crear el cursor

Cambiaría la declaración que verifica si la conexión está abierta para verificar si la conexión no es ninguna y si la conexión está abierta. Y porque siempre ejecutas el setValue función Te recomendaría que llames a la conexión dentro del __init__ función.

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()

Además, recuerde que con Python MySQL Connector debe llamar a commit después de ejecutar una declaración de inserción o actualización.

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