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)
相关推荐
2301_77563989几秒前
Redis怎样查询集群的整体健康状态_使用cluster info指令查看槽位覆盖率与节点状态
jvm·数据库·python
zhoutongsheng几秒前
CSS如何处理带有状态切换的折叠菜单_利用BEM修饰符管理状态
jvm·数据库·python
dfdfadffa2 分钟前
Redis怎样配置基础连接参数
jvm·数据库·python
测试员周周3 分钟前
【AI测试功能4】别再用传统等价类设计 AI测试用例了——语义覆盖的四种变体方法
人工智能·python·测试
2301_782040454 分钟前
golang如何实现图片水印批量添加_golang图片水印批量添加实现策略
jvm·数据库·python
夏恪5 分钟前
Redis如何利用Redisson处理并发击穿
jvm·数据库·python
俊昭喜喜里7 分钟前
Allegro/OrCad转换成立创eda文件
python·django
2401_8504916511 分钟前
如何处理SQL注入敏感源_记录所有不安全的SQL请求
jvm·数据库·python
彳亍10112 分钟前
如何防御SQL注入的SQL畸形查询_利用语法分析器检测
jvm·数据库·python
m0_7414817814 分钟前
如何使用 AWS Lambda 和 Python 获取 EMR 集群的标签列表
jvm·数据库·python