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”的主要内容,如果未能解决你的问题,请参考以下文章
Django搭建个人博客平台2---创建一个Django项目和项目梳理