【问题标题】:how to use the bulk_create() for many objects to do the save() operation如何对许多对象使用 bulk_create() 来执行 save() 操作
【发布时间】:2015-12-18 22:41:30
【问题描述】:

我有很多对象要保存到数据库中,代码如下:

def addSthGroups(groups):
    for group in groups:  # each group is an object
        group.addSth()
        group.save()

现在,一个一个地保存所有对象需要很多时间。所以我的问题是:有没有更有效的方法来收集所有对象只调用一次 save() ,它可能会加快处理时间,据我所知,bulk_create 听起来很好处理这种情况,谁能举个例子这段代码?还是有什么好的建议?

【问题讨论】:

    标签: python django django-models transactions


    【解决方案1】:

    您可以只使用Group.objects.bulk_create(groups),假设Group 是模型名称。

    bulk_create 不会调用save()。引用 django doc:

    模型的save()方法不会被调用,pre_save和 不会发送post_save 信号。

    【讨论】:

    • 感谢您的回复,save() 在哪里。它是否集成到 bulk_create() 中?
    • 所以现在我不能使用 bulk_create 来收集所有对象来只调用一次 save() 吗?你还有什么建议吗?谢谢。
    • 为什么要打电话给save()?您无需致电save()bulk_create 将一次性创建所有内容。
    • 我不确定,django 新手。我为每个对象调用addSth(),然后我应该将新对象保存到数据库中,固定代码如下:def addSthGroups(groups):save_list = []for group in groups:group.addSth()save_list.append(group)adgroup.objects.bulk_create(save_list)
    • 我没有你的环境,所以没办法给你试用。如果有任何问题,您应该自己尝试并在 stackoverflow 上发布问题,人们非常乐意为您提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 2018-10-26
    相关资源
    最近更新 更多