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