gpt4 book ai didi

mysql - 数据库更新异常

转载 作者:行者123 更新时间:2023-11-30 00:43:50 25 4
gpt4 key购买 nike

我正在 Django 中开发一款游戏,其中叛军的数量会在回合变化后更新。叛军在 (MySQL) 数据库中表示为 0 到 100 之间的整数。

当我保存时,会发生这种情况:

print world.rebels
>>> 0

rebstab = 0
world.rebels += rebstab
world.save()

print world.rebels
>>> 0

但是,当我使用 F() 表达式时(据我所知,我应该防止竞争条件),会发生这种情况:

print world.rebels
>>> 0

rebstab = 0
world.rebels = F('rebels') + rebstab
world.save()

print world.rebels
>>> 100

发生什么事了?

最佳答案

我没有任何使用像这样的 F() 对象的经验,所以这个答案可能没有用,但是 having a look at the documentation it mentions :

In order to access the new value that has been saved in this way, the object will need to be reloaded:

reporter = Reporters.objects.get(pk=reporter.pk)

因此您可能需要再次实际查询数据库才能查看更新后的值:

print world.rebels
>>> 0

rebstab = 0
world.rebels = F('rebels') + rebstab
world.save()

print World.objects.get(pk=world.pk)
>>> 100

编辑:另请参阅[您不需要将对象拉入内存并可以在数据库级别执行所有操作的示例:

World.objects.get(pk=...).update(rebels=F('rebels) + 1)

关于mysql - 数据库更新异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21553945/

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