django 中的批量更新-ag捕鱼王app官网

当前位置:ag捕鱼王app官网 > 学无止境 >

django 中的批量更新

作者:迹忆客 最近更新:2023/02/27 浏览次数:

在 django 中,默认情况下,每个模型都有一个对象管理器。这个管理器可以做很多事情,比如获取模型实例、过滤模型实例、删除模型实例。我们甚至可以通过继承 django 提供的基础管理器来创建我们自己的管理器。

现在,我们应用的每个查询,例如使用 get() 函数检索单个模型实例或使用 filter() 方法过滤实例,都会命中数据库一次。这意味着,如果我们有如下 5 个 get() 语句,数据库将被单独查询 5 次。

person = person.objects.get(id = 1)
person = person.objects.get(id = 2)
person = person.objects.get(id = 3)
person = person.objects.get(id = 4)
person = person.objects.get(id = 5)

这是一种低效的方法,因为我们正在为单个任务单独访问数据库。如果我们必须为某些模型查询多个实例或更新多个实例,这种方法会显着降低我们的应用程序的速度。

为了解决这个问题,django 有一个内置函数,通常可以用于在一个查询中更新多个实例。

bulk_update 方法具有三个参数,即 objsfieldsbatch_size

考虑一个例子。假设我们有一个 person 模型,我们必须使用 bulk_update() 方法将所有人员的年龄增加 1。我们会做以下事情。

models.py 中:

from django.db import models
class person(models.model):
    username = models.charfield(max_length = 200, unique = true)
    firstname = models.charfield(max_length = 200)
    middlename = models.charfield(max_length = 200)
    lastname = models.charfield(max_length = 200)
    age = models.integerfield(default = 0)

views.py 中:

people = person.objects.all()
for person in people:
    person.age  = 1
person.objects.bulk_update(people, update_fields = ['age']) 

此操作将在单个查询中更新所有人员的年龄,这是非常有效的。

bulk_update() 方法非常好,但并非所有的闪光点都是金子。这种方法有一些缺点。

上一篇:

下一篇:django 中的时区

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:python

pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 dataframe 中。

pandas 追加数据到 csv 中

发布时间:2024/04/24 浏览次数:352 分类:python

本教程演示了如何在追加模式下使用 to_csv()向现有的 csv 文件添加数据。

pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:python

本教程介绍了如何在 pandas 中使用 dataframe.merge()方法合并两个 dataframes。

pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:python

本教程介绍了如何使用 python 中的 loc 和 iloc 从 pandas dataframe 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图