gpt4 book ai didi

Django 和 Django ORM : performance improvements to bulk updating records

转载 作者:行者123 更新时间:2023-12-02 08:00:31 24 4
gpt4 key购买 nike

我希望这将是一个非常简单的问题。

我只是想要一些关于批量更新记录的建议。

一个示例批量更新可能是这样的:

for user in User.objects.all().iterator():
user.is_active = False
user.save()

是否有更有效的方法使用 Django ORM 在数据库级别执行此操作?

下面会不会更有效率:

User.objects.all().update(is_active=False)?

最佳答案

它会起作用,但请注意,更新命令将直接转换为 SQL 命令,不会运行您在 save 上自定义的任何内容,也不会触发保存信号。如果您的情况没有问题并且您更担心性能,那就去做吧。

来自 django 文档:

Be aware that the update() method is converted directly to an SQL statement. It is a bulk operation for direct updates. It doesn’t run any save() methods on your models, or emit the pre_save or post_save signals (which are a consequence of calling save()), or honor the auto_now field option. If you want to save every item in a QuerySet and make sure that the save() method is called on each instance, you don’t need any special function to handle that.

https://docs.djangoproject.com/en/2.2/topics/db/queries/#updating-multiple-objects-at-once

关于Django 和 Django ORM : performance improvements to bulk updating records,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58203793/

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