Przyjmij, że tabela ma trzy kolumny: username
, password
i no_of_logins
.Jak zaktualizować wpis wiersza SQLAlchemy?
Gdy użytkownik próbuje się zalogować, to sprawdzone wpisu z zapytaniem jak
user=User.query.filter_by(username=form.username.data).first()
Jeśli hasło pasuje, on przechodzi dalej. Chciałbym policzyć, ile razy użytkownik się zalogował. Dlatego za każdym razem, gdy pomyślnie się zaloguje, chciałbym zwiększyć pole no_of_logins
i zapisać je z powrotem do tabeli użytkowników. Nie wiem, jak uruchomić kwerendę aktualizacyjną za pomocą SqlAlchemy.
http://stackoverflow.com/a/2334917/125507 mówi, że to jest zły sposób to zrobić. A co, jeśli rząd jeszcze nie istnieje? – endolith
Zgodnie z linkiem endolith, "user.no_of_logins + = 1' może stworzyć warunki wyścigu. Zamiast tego użyj 'user.no_of_logins = user.no_of_logins + 1'. W tłumaczeniu na sql ten drugi poprawny sposób staje się: 'SET no_of_logins = no_of_logins + 1'. – ChaimG
@ChaimG Chyba chodziło Ci o 'user.no_of_logins = User.no_of_logins + 1', lub innymi słowy użyj oprzyrządowanego atrybutu modelu do wytworzenia wyrażenia SQL. Ponieważ jest to Twój komentarz, wyświetlane są 2 sposoby na wytworzenie tego samego stanu wyścigu. –