gpt4 book ai didi

python - 为什么 SQLAlchemy 不更新 Flask WSGI 服务器中的行值?

转载 作者:行者123 更新时间:2023-11-29 11:50:16 27 4
gpt4 key购买 nike

我正在创建一个测试网络应用程序,每次用户提交正确的问题时,都会调用不正确正确方法,为用户提供 传入相应行中 totalattempted+1

def incorrect(user):
u = user
u.totalattempted += 1
session.commit()
u.score = round(u.totalcorrect * u.totalcorrect / u.totalattempted)
session.commit()

def correct(user):
u = user
u.totalattempted += 1
session.commit()
u.totalcorrect += 1
session.commit()
u.score = round(u.totalcorrect * u.totalcorrect / u.totalattempted)
session.commit()

我遇到的问题是,当每秒多次调用 Correct 方法时,服务器会正​​确地为用户的 total Correct 提供+1,但不会给出总尝试次数+1。我几乎觉得这个问题可能是服务器范围内的,因为当创建用户帐户时,服务器检测到该用户帐户之前大约有 30 秒的延迟。谢谢!

最佳答案

您的代码很容易出现竞争条件。增加模型上的值会使用新值更新数据库。它不执行原子更新。为此:

u.totalattempted = User.totalattempted + 1

对于total Correct也应该做同样的事情。

此外,您可能不应该在更新每个字段之间进行提交。这会导致 SQLAlchemy 在您更新 total Correct 时刷新 session 并重新加载记录。

关于python - 为什么 SQLAlchemy 不更新 Flask WSGI 服务器中的行值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34214819/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com