Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Python:a conexão do MySQL está aberta, mas não pode criar o cursor


Eu mudaria a declaração que verifica se a conexão está aberta tanto para verificar se conn é none quanto se a conexão está aberta. E porque você sempre executa o setValue Eu recomendo que você chame a conexão dentro do __init__ função.
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()

Além disso, lembre-se de que, com o Python MySQL Connector, você precisa chamar commit após executar uma instrução de inserção ou atualização.
cur =  self.conn.cursor()
cur.execute("...")
self.conn.commit()