Django“bulk_save”和“bulk_update”

Posted

技术标签:

【中文标题】Django“bulk_save”和“bulk_update”【英文标题】:Django "bulk_save" and "bulk_update" 【发布时间】:2012-07-09 13:51:53 【问题描述】:

更新:增加了赏金。请提供一个例子,我会接受最好的答案

更新 2:现在包含显式示例

Carrying on from the same project, where I asked about bulk_create in a separate thread. 我想知道是否有一种本质上“批量保存”的方法 - 如果不存在则插入,或者如果它已经存在则简单地更新。

例如:

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    height = models.DecimalField(blank=True, null=True)
    weight = models.DecimalField(blank=True, null=True)

我有一个包含这些字段的键值对的字典列表。我想按姓名过滤,然后更新身高和/或体重,因为这些我的球员仍在成长和调理。如果没有简单的“bulk_save”方法,批量更新也会有所帮助。

Reference: June 8, 2012 - "get_or_create()" patch at django project

Bulk_update reference

【问题讨论】:

我不明白您要为每个对象更新哪些信息,以及您想使用哪些信息来搜索现有对象。您能给我们举个例子,说明您想如何使用可能的 bulk_create_or_update 方法吗?在我看来,你可以结合一些现有的 django 方法来获得你想要的行为,但我不明白你到底想要做什么...... @marianobianchi - 添加了明确的示例。谢谢! “我想按名称过滤”听起来像是一个更新操作。 “bulk_save”听起来像“bulk_create”。我也不知道在 django 中是否可以使用 bulk_update。 【参考方案1】:

我刚刚对下面列出的 update_many 函数做了一个变体,我似乎已经大大提高了速度。

http://people.iola.dk/olau/python/bulkops.py

更新 - 显然 DSE2 也是一种选择。

https://bitbucket.org/weholt/dse2

明天会更新速度测试。

【讨论】:

用另一个选项更新。明天会给出速度比较。 你进行了速度测试吗?

以上是关于Django“bulk_save”和“bulk_update”的主要内容,如果未能解决你的问题,请参考以下文章

django2.0和3.0的区别

flask和django的对比

Django搭建个人博客平台2---创建一个Django项目和项目梳理

Django搭建个人博客平台2---创建一个Django项目和项目梳理

Django 和 Django 休息框架

django和wsgi的问题。