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

UnboundLocalError:variável local 'cursor' referenciada antes da atribuição


Você só define conn e cursor dentro do bloco if verificando os valores do formulário. Se o bloco não for inserido, eles não serão definidos, mas você ainda tentará fazer referência a eles para fechá-los de qualquer maneira. Você só deve chamar close em ambos se você os definiu. Ou mova conn = e cursor = para antes do bloco if, ou mova o close chamadas para dentro do bloco.

No entanto, o maior problema é que você está entendendo mal/complicando demais como usar o Flask-MySQLdb. Ele criará automaticamente a conexão e a fechará quando a solicitação for concluída, o que também fechará o cursor. Basta usar a extensão conforme descrito nos docs .
...
cur = mysql.connection.cursor()
cur.callproc('sp_createUser', (name, email, hashed_password))
data = cur.fetchall()
...