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

UnboundLocalError:variable local 'cursor' referenciada antes de la asignación

Solo defines conn y cursor dentro del bloque if comprobando los valores del formulario. Si no se ingresa el bloque, no están definidos, pero aún intenta hacer referencia a ellos para cerrarlos de todos modos. Solo debe llamar a close en ambos si los ha definido. Mueve conn = y cursor = antes del bloque if, o mueva el close llamadas dentro del bloque.

Sin embargo, el mayor problema es que está malinterpretando/complicando demasiado cómo usar Flask-MySQLdb. Creará automáticamente la conexión y la cerrará cuando se complete la solicitud, lo que también cierra el cursor. Simplemente use la extensión como se describe en los docs .

...
cur = mysql.connection.cursor()
cur.callproc('sp_createUser', (name, email, hashed_password))
data = cur.fetchall()
...