django批量插入,遇到错误改为逐条插入

为了提升插入数据的效率,通常采用批量插入的方式,当一批数据中有错误数据时,该批次数据报错,都插入失败。如何跳过引起报错的数据,将其他正确的数据插入,实现方式如下代码。

复制代码
data_to_insert = []
for i, data in  datas:
    testDemo = TestDemo()
    testDemo.ID = data[i].id
    testDemo.NAME = data[i].name
    data_to_insert.append(testDemo)

    if (i + 1) % 1000 == 0:
        try:
            TestDemo.objects.bulk_create(data_to_insert, batch_size=1000)
        except Exception as e:
            # 处理批次插入错误,逐个插入并跳过异常数据
            print("批次插入数据时出现错误:", e)
            for item in data_to_insert:
                try:
                    item.save()
                except Exception as e:
                    # 处理逐条插入错误,可以打印错误信息或进行其他操作
                    print("逐条插入数据时出现错误:", e)
        data_to_insert.clear()

# 处理最后可能剩余的数据
try:
    TestDemo.objects.bulk_create(data_to_insert, batch_size=1000)
except Exception as e:
    # 处理批次插入错误,逐个插入并跳过异常数据
    print("批次插入数据时出现错误:", e)
    for item in data_to_insert:
        try:
            item.save()
        except Exception as e:
            # 处理逐条插入错误,可以打印错误信息或进行其他操作
            print("逐条插入数据时出现错误:", e)
相关推荐
执笔画流年呀1 天前
计算机是如何⼯作的
linux·开发语言·python
m0_716430071 天前
HTML函数能否用触控板高效编写_触控硬件操作体验评估【汇总】
jvm·数据库·python
2401_835956811 天前
Golang怎么安全关闭channel_Golang channel关闭教程【通俗】
jvm·数据库·python
Absurd5871 天前
golang如何实现MQTT主题通配符路由_golang MQTT主题通配符路由实现策略
jvm·数据库·python
m0_674294641 天前
宝塔面板如何设置网站强制HTTPS_配置Nginx自动跳转规则
jvm·数据库·python
qq_424098561 天前
HTML函数开发用可拆卸键盘设计实用吗_模块化硬件体验评估【指南】
jvm·数据库·python
Wyz201210241 天前
CSS如何实现Less颜色函数自动计算渐变_使用lighten与darken实现视觉反馈
jvm·数据库·python
weixin_458580121 天前
CSS如何通过Emotion管理样式加载顺序_处理组件优先级问题
jvm·数据库·python
qq_334563551 天前
golang如何优化GORM查询性能_golang GORM查询性能优化方法
jvm·数据库·python
weixin_424999361 天前
CSS如何处理移动端弹窗背景滚动_使用JS控制配合CSS样式锁定
jvm·数据库·python