Django批量保存数据bulk_create方法

每创建一个对象都保存一次数据,会增加开销,如果先批量创建对象,最后保存一次到数据库,就使用bulk_create方法

# 获取数量
nums = request.POST.get('nums').strip()
if nums.isdigit() and int(nums) > 0:
    # 方法一
    # for i in range(int(nums)):
    #     device = Device(
    #         category=category,
    #         seat=seat_obj,
    #         asset_code='',
    #         asset_num='V{}-{}'.format(category.name, str(i).zfill(4)),  # V类型-0001编号
    #         use_info='',
    #         operator=operator,
    #         op_type=1
    #     )
    #     device.save()  # 每次save()的时候都会访问一次数据库。导致性能问题

    # 方法二
    device_obj_list = []
    for i in range(int(nums)):
        device_obj_list.append(
            Device(
                category=category,
                seat=seat_obj,
                asset_code='---',
                asset_num='{}-xxxx'.format(category.name),  # 类型-xxxx
                use_info='---',
                operator=operator,
                op_type=1
            )
        )
    Device.objects.bulk_create(device_obj_list)  # 使用django.db.models.query.QuerySet.bulk_create()批量创建对象,减少SQL查询次数
    messages.info(request, '批量添加{}条数据完成!'.format(nums))

你可能感兴趣的:(django,数据库,python)