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