Mysql
 sql >> Datenbank >  >> RDS >> Mysql

UnboundLocalError:Lokale Variable „Cursor“ wurde vor der Zuweisung referenziert

Sie definieren nur conn und cursor innerhalb des if-Blocks, der die Formularwerte überprüft. Wenn der Block nicht betreten wird, sind sie nicht definiert, aber Sie versuchen trotzdem, auf sie zu verweisen, um sie trotzdem zu schließen. Sie sollten nur close aufrufen auf beiden, wenn Sie sie definiert haben. Verschieben Sie entweder conn = und cursor = vor den if-Block oder verschieben Sie das close Aufrufe innerhalb des Blocks.

Das größere Problem ist jedoch, dass Sie die Verwendung von Flask-MySQLdb missverstehen/überkomplizieren. Es erstellt automatisch die Verbindung und schließt sie, wenn die Anfrage erledigt ist, wodurch auch der Cursor geschlossen wird. Verwenden Sie einfach die Erweiterung wie in den docs beschrieben .

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