Предположим, стол имеет три столбца: username
, password
и no_of_logins
.Как обновить запись строки SQLAlchemy?
Когда пользователь пытается войти в систему, она проверяется на запись с запросом, как
user=User.query.filter_by(username=form.username.data).first()
Если пароль совпадает, то он идет дальше. То, что я хотел бы сделать, - подсчитать, сколько раз пользователь вошел в систему. Таким образом, всякий раз, когда он успешно регистрируется, я хотел бы увеличить поле no_of_logins
и сохранить его обратно в таблицу пользователя. Я не уверен, как запустить запрос на обновление с помощью SqlAlchemy.
http://stackoverflow.com/a/2334917/125507 говорит, что это плохой способ сделать это. И что, если строка еще не существует? – endolith
Как и в случае с эндолитом, 'user.no_of_logins + = 1' может создавать условия гонки. Вместо этого используйте 'user.no_of_logins = user.no_of_logins + 1'. Последним правильным способом является преобразование в sql: 'SET no_of_logins = no_of_logins + 1'. – ChaimG
@ChaimG Я предполагаю, что вы имели в виду 'user.no_of_logins = User.no_of_logins + 1', или, другими словами, использовать инструментальный атрибут модели для создания выражения SQL. Поскольку в вашем комментарии отображается 2 способа создания одного и того же состояния гонки. –