1
私は 'User'というモデルを持っていて、 'User'は 'Money'を持っています。
複数のセッションがモデル 'User'を読み込み、同時に 'money'を更新できるシナリオがあります。Flask-SQLAlchemy with_for_update()行ロック
セッション1は、セッション1が正常に更新された後、「money」値を読み取る必要があります。
更新時に「ユーザー」行をロックしようとしました。
ここに私のコードです。私は同時に、このコードを実行するには、2つのセッションを開いた
user = User.query.with_for_update().filter_by(id=userid).first()
print('000000')
before_money = user.money
print('111111')
time.sleep(1)
user.money -= 0.1
print('User:' + str(user.id) + '***' + str(before_money) + '-' + str(0.1) + ' = ' + str(user.money))
time.sleep(1)
db.session.commit()
print('22222')
、出力
000000
111111
User:1***125.3-0.1 = 125.2
000000
111111
22222
User:1***125.3-0.1 = 125.2
22222
セッション2は、更新された値を読み取れませんでした。
問題がどこにあるか本当に知りたいです。