Как обновить запись строки SQLAlchemy?
предположим, что таблица имеет три столбца:username,password и no_of_logins.
когда пользователь пытается войти в систему, он проверяется для записи с запросом, как
user=User.query.filter_by(username=form.username.data).first()
если пароль совпадает, он продолжается дальше. То, что я хотел бы сделать, это подсчитать, сколько раз пользователь вошел в систему. Таким образом, всякий раз, когда он успешно входит в систему, я хотел бы увеличить no_of_logins поле и сохранить его обратно в таблицу пользователя. Я не уверен, как запустить запрос на обновление с помощью SqlAlchemy.
3 ответов:
есть несколько способов
UPDATEС помощьюsqlalchemy1) user.no_of_logins += 1 session.commit() 2) session.query().\ filter(User.username == form.username.data).\ update({"no_of_logins": (User.no_of_logins +1)}) session.commit() 3) conn = engine.connect() stmt = User.update().\ values(no_of_logins=(User.no_of_logins + 1)).\ where(User.username == form.username.data) conn.execute(stmt) 4) setattr(user, 'no_of_logins', user.no_of_logins+1) session.commit()
С помощью
user=User.query.filter_by(username=form.username.data).first()заявление вы получите на указанный пользователем вuserпеременной.теперь вы можете изменить значение новой переменной объекта, например
user.no_of_logins += 1и сохраните изменения с помощьюsession'ы метод commit.
Comments