Mysql
 sql >> Database >  >> RDS >> Mysql

UnboundLocalError:variabile locale 'cursor' a cui si fa riferimento prima dell'assegnazione

Definisci solo conn e cursor all'interno del blocco if controllando i valori del modulo. Se il blocco non viene inserito, non è definito, ma si tenta comunque di fare riferimento ad esso per chiuderlo comunque. Dovresti solo chiamare close su entrambi se li hai definiti. O muovi conn = e cursor = prima del blocco if, oppure sposta il close chiamate all'interno del blocco.

Tuttavia, il problema più grande è che stai fraintendendo/complicando eccessivamente come utilizzare Flask-MySQLdb. Creerà automaticamente la connessione e la chiuderà al termine della richiesta, chiudendo anche il cursore. Usa semplicemente l'estensione come descritto nei documenti .

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