テーブルには、3つの列、username
,password
およびno_of_logins
があるとします。パスワードが一致した場合、ユーザーがログインしようとするとSQLAlchemyの行エントリを更新するには?
、それは
user=User.query.filter_by(username=form.username.data).first()
のようなクエリを持つエントリをチェックしています、彼はさらに進行します。私がしたいのは、ユーザーがログインした回数を数えることです。したがって、彼が正常にログインするたびに、no_of_logins
フィールドをインクリメントしてユーザーテーブルに戻したいと思います。 SqlAlchemyで更新クエリを実行する方法がわかりません。あなたはuser
変数で指定されたユーザーを取得しますuser=User.query.filter_by(username=form.username.data).first()
文の助けを借りて
http://stackoverflow.com/a/2334917/125507を使用して
UPDATE
には、いくつかの方法がありますが、これはそれを行うには悪い方法であると言います。行がまだ存在しない場合はどうなりますか? – endolithendolithのリンクごとに、 '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'を意味すると思います。言い換えれば、モデルのinstrumented属性を使用してSQL式を生成します。あなたのコメントは同じ競争条件を作り出す2つの方法を示しています。 –