weixin_48056306 2023-05-30 15:38 采纳率: 25%
浏览 9
已结题

bulk-update-or-create

img


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

  • 写回答

2条回答 默认 最新

  • IT论之程序员 2023-05-30 19:44
    关注

    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 对象。
      使用这个方法可以大大提高批量创建或更新对象的效率。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月8日
  • 已采纳回答 5月31日
  • 创建了问题 5月30日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题