bulk-update-or-create

img


最近遇到django-bulk-update-or-create 这个方法,我们的项目是利用外部API接口获取到人员信息,保证我们本地数据库与外部API接口获取到的信息保持一致,所以想到django 的批量更新和创建方法,但是官网给的方法没研究明白,图片中的方法也不太明白怎么用,有没有再详细一点的解释

django-bulk-update-or-create 这个方法可以批量更新数据库中的数据,或者如果数据不存在的话就创建新数据。使用步骤如下:

  1. 导入 bulk_update_or_create 方法:
    python
    from django.db.utils import BulkCreateError, BulkUpdateOrCreate
  2. 准备要更新或创建的数据,形如:
    python
    data = [
    {
     'name': 'John Doe',
     'age': 42
    
    },
    {
     'name': 'Jane Doe',
     'age': 50
    
    }
    ]
  3. 使用 BulkUpdateOrCreate 执行批量更新/创建:
    python
    try:
    BulkUpdateOrCreate(YourModel, data, 字段1...)
    except BulkCreateError as bce:

    处理数据已存在,需要更新的情况

  4. BulkUpdateOrCreate 会首先查找 data 中对象在数据库中的对应记录。如果找到,则执行更新操作。如果没有找到,则执行创建操作。
  5. 你需要指定用来匹配数据的字段,以及要更新的字段。 BulkUpdateOrCreate 会使用指定的匹配字段对 data 中的对象在数据库中进行查找。
    例如:
    python
    try:
    BulkUpdateOrCreate(User, data, ['name'], ['age'])
    except BulkCreateError as bce:

    用户已经存在,更新年龄

    User.objects.filter(name__in=[d['name'] for d in bce.row_data]).update(age=F('age') + 1)
    以上代码会首先查找 name 字段匹配的 User 对象。如果找到,则更新 age 字段。如果没有找到,则创建新的 User 对象。
    使用这个方法可以大大提高批量创建或更新对象的效率。