La tabella delle ipotesi contiene tre colonne: username
, password
e no_of_logins
.Come aggiornare la voce di riga SQLAlchemy?
Quando l'utente tenta di accedere, è controllato per una voce con una query come
user=User.query.filter_by(username=form.username.data).first()
Se partite da password, si procede ulteriormente. Quello che vorrei fare è contare quante volte l'utente ha effettuato l'accesso. Pertanto, ogni volta che si collega correttamente, desidero incrementare il campo no_of_logins
e memorizzarlo nella tabella utente. Non sono sicuro di come eseguire la query di aggiornamento con SqlAlchemy.
http://stackoverflow.com/a/2334917/125507 dice che questo è un brutto modo di farlo. Inoltre, cosa succede se la riga non esiste ancora? – endolith
Come per il link di endolith, 'user.no_of_logins + = 1' può creare condizioni di gara. Usa invece 'user.no_of_logins = user.no_of_logins + 1'. Tradotto in SQL l'ultimo modo corretto diventa: 'SET no_of_logins = no_of_logins + 1'. – ChaimG
@ChaimG Immagino che tu intenda 'user.no_of_logins = User.no_of_logins + 1', o in altre parole usa l'attributo instrumented del modello per produrre un'espressione SQL. Come è il tuo commento mostra 2 modi per produrre la stessa condizione di gara. –