gpt4 book ai didi

python - 如何在 django 中执行...重复 key 更新...

转载 作者:行者123 更新时间:2023-12-01 08:49:14 25 4
gpt4 key购买 nike

有没有办法在 django 的 ORM 中执行以下操作?

INSERT INTO mytable
VALUES (1,2,3)
ON DUPLICATE KEY
UPDATE field=4

我熟悉 get_or_create,它采用默认值,但如果默认值存在差异,则不会更新记录。通常我使用以下方法,但它需要两次查询而不是一次:

item = Item(id=1)
item.update(**fields)
item.save()

还有其他方法可以做到这一点吗?

最佳答案

I'm familiar with get_or_create, which takes default values, but that doesn't update the record if there are differences in the defaults.

update_or_create应该提供您正在寻找的行为。

Item.objects.update_or_create(
id=1,
defaults=fields,
)

它返回与 get_or_create 相同的(object,created)元组。

请注意,这仍然会执行两个查询,但仅在记录尚不存在的情况下(如 get_or_create 的情况)。如果由于某种原因这是 Not Acceptable ,您可能会不得不编写原始 SQL 来处理这个问题,这在可读性和可维护性方面是不幸的。

关于python - 如何在 django 中执行...重复 key 更新...,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53196088/

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