最近遇到django-bulk-update-or-create 这个方法,我们的项目是利用外部API接口获取到人员信息,保证我们本地数据库与外部API接口获取到的信息保持一致,所以想到django 的批量更新和创建方法,但是官网给的方法没研究明白,图片中的方法也不太明白怎么用,有没有再详细一点的解释
![](https://profile-avatar.csdnimg.cn/97a585ab797e497da7223ee7939376f4_weixin_48056306.jpg!4)
bulk-update-or-create
最近遇到django-bulk-update-or-create 这个方法,我们的项目是利用外部API接口获取到人员信息,保证我们本地数据库与外部API接口获取到的信息保持一致,所以想到django 的批量更新和创建方法,但是官网给的方法没研究明白,图片中的方法也不太明白怎么用,有没有再详细一点的解释
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- IT论之程序员 2023-05-30 19:44关注
django-bulk-update-or-create 这个方法可以批量更新数据库中的数据,或者如果数据不存在的话就创建新数据。使用步骤如下:
- 导入 bulk_update_or_create 方法:
python
from django.db.utils import BulkCreateError, BulkUpdateOrCreate - 准备要更新或创建的数据,形如:
python
data = [
{
},'name': 'John Doe', 'age': 42
{
}'name': 'Jane Doe', 'age': 50
] - 使用 BulkUpdateOrCreate 执行批量更新/创建:
python
try:
BulkUpdateOrCreate(YourModel, data, 字段1...)
except BulkCreateError as bce:处理数据已存在,需要更新的情况
- BulkUpdateOrCreate 会首先查找 data 中对象在数据库中的对应记录。如果找到,则执行更新操作。如果没有找到,则执行创建操作。
- 你需要指定用来匹配数据的字段,以及要更新的字段。 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无用 - 导入 bulk_update_or_create 方法:
悬赏问题
- ¥200 csgo2的viewmatrix值是否还有别的获取方式
- ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
- ¥15 请把下列每一行代码完整地读懂并注释出来
- ¥15 pycharm运行main文件,显示没有conda环境
- ¥15 易优eyoucms关于二级栏目调用的问题
- ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
- ¥15 为什么eclipse不能再下载了?
- ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
- ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
- ¥15 特定网页无法访问,已排除网页问题