Mysql
 sql >> Base de données >  >> RDS >> Mysql

UnboundLocalError :variable locale "curseur" référencée avant l'affectation

Vous ne définissez que conn et cursor à l'intérieur du bloc if vérifiant les valeurs du formulaire. Si le bloc n'est pas entré, ils ne sont pas définis, mais vous essayez quand même de les référencer pour les fermer quand même. Vous ne devez appeler que close sur les deux si vous les avez définis. Soit déplacer conn = et cursor = avant le bloc if, ou déplacez le close appels à l'intérieur du bloc.

Cependant, le plus gros problème est que vous comprenez mal/complissez trop comment utiliser Flask-MySQLdb. Il créera automatiquement la connexion et la fermera lorsque la demande sera terminée, ce qui fermera également le curseur. Utilisez simplement l'extension comme décrit dans la docs .

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