在使用insert_many对mongodb进行多文档插入时报错

pymongo.errors.BulkWriteError: batch op errors occurred

但奇怪的是这样没问题

>>> mycol.insert_many(documents=[{'a':1},{'a':1},{'a':1},{'a':1},{'a':1},{'a':1},{'a':1},{'a':1},{'a':1}])

下面这样就会报错

>>> pool1 = [{'a':1},{'a':1},{'a':1}]
>>> pool0 = pool1 * 3
>>> mycol.insert_many(documents=pool0)

打印出列表中每个元素的id:

In [5]: id(pool0[0])
Out[5]: 4551175744In [6]: id(pool0[1])
Out[6]: 4550162624In [7]: id(pool0[3])
Out[7]: 4551175744In [8]: id(pool0[4])
Out[8]: 4550162624

可以发现pool0[0]和pool0[3]的id一样,也就是说这两个是一个实例,所以报错了
解决办法就是不要出现list乘数字的方式,list.extend()方式亦会出现相同实例的问题

用深拷贝的方式能够解决问题

>>> import copy
>>> pool0.extend(copy.deepcopy(pool1))

注意:以下方式亦会出现相同实例,不要使用

>>> import copy
>>> pool0 = copy.deepcopy(pool1) * 3
# 浅拷贝
>>> pool0.extend(pool1.copy())

参考:
https://blog.csdn.net/u010099495/article/details/50276833
https://stackoverflow.com/a/42389548/7151777

由于列表中存在相同实例导致insert_many报错解决办法相关推荐

  1. python向数据库插入字符串数据,字符串中含有单引号,入库报错解决办法

    目录 问题 解决办法 示例 问题 最近处理部分数据,某些字段的数据中,含有单引号(含有双引号应该没有影响,如果报错,解决办法和单引号的方式类似)入库是会报错.       针对这一问题,解决办法如下: ...

  2. SQL Server中TOP子句可能导致的问题以及解决办法

    SQL Server中TOP子句可能导致的问题以及解决办法 参考文章: (1)SQL Server中TOP子句可能导致的问题以及解决办法 (2)https://www.cnblogs.com/firs ...

  3. Log4j2 日志 依赖 jar包 缺失 导致启动报错 解决方法

    Log4j2 日志 依赖 jar包 缺失 导致启动报错 解决方法. 一个Java老项目,更新了日志工具,升级为Log4j2,在引入log4j-api-2.14.0.jar 和log4j-core-2. ...

  4. idea安装及项目导入过程中pom报错解决办法

    1.idea安装可用破解版或者在淘宝上买正版账号(20多块钱一年,挺便宜的) 2.pom报错解决办法: 在项目导入过程中pom报错: 原因:相关jar包未下载完.(下载速度慢,因为下载的链接是国外的节 ...

  5. 亲测有效:spring boot中parent节点报错解决办法

    今天中午开始学习spring boot,结果一中午都卡在了pom.xml配置上.因为spring boot需要引入一个parent project, pom.xml文件中: <!-- Inher ...

  6. c++中结构体套结构体用 = {0}初始化编译报错解决办法(用memset或者={})(error: invalid conversion)

    我这有个结构体: VENC_CHN_ATTR_S venc_chn_attr; /* the attribute of the venc chnl*/ typedef struct rkVENC_CH ...

  7. python爬虫如何连接数据库_手把手教你如何在Navicat中如何新建连接数据库及相关报错解决方法...

    前几天给大家分享了如何安装Navicat,没有来得及上车的小伙伴可以戳这篇文章:手把手教你安装Navicat--靠谱的Navicat安装教程.今天给大家分享一下Navicat的简单使用教程,具体的教程 ...

  8. 安装wps导致 application/kset 上传文件类型报错解决办法

    电脑中安装wps上传execl时,上传.xls文件时 报错 application/kset 文件类型不正确 打印array() print_r($_FILES ) 结果如下: Array ( [us ...

  9. JupyterLab中Kernel相关使用技巧和报错解决

    感觉JupyterLab使用的人还是比较少,大家都很喜欢Jupyter Notebook,然后Lab的推广做的也就一般,还没有在Annaconda中默认安装,所以有时候遇到什么坑就很头疼. 原本像往常 ...

最新文章

  1. 第十五章 动态规划——最优二叉搜索树
  2. go 二进制程序守护_GO-环境设置
  3. 使用SAP API portal进行SAP SuccessFactors的API测试
  4. SpringBoot-探索回顾Spring框架本质
  5. *p++和*++p_2020年P气瓶充装新版试题及P气瓶充装找答案
  6. 机器学习算法之CART(分类回归树)概要
  7. 模具计算机辅助设计笔试题,模具CADCAM试卷
  8. python下载的库包放_python下载的库包存放路径
  9. 2.1 InnoDB存储引擎(概述、版本、体系结构)
  10. 可调稳压电源lm317实验报告_LM317可调稳压电源
  11. CS-Notes 知识清单 备战版
  12. linux看磁带内容命令,Linux下磁带管理命令
  13. Qt 内存管理与布局管理器
  14. 博客从CSDN迁移至简书啦
  15. jumpserver详解(六)——jumpserver luna组件安装
  16. 定义QTimer引发的异常:double free or corruption (!prev)
  17. 转贴–人生的职业规划:让自己变得重要
  18. 东北大学继续教育学院计算机辅助数控编程,计算机辅助数控编程B卷李虎.doc离线.doc...
  19. 圣斗士星矢重生服务器维护,圣斗士星矢重生新版本更新内容介绍 新版将上线...
  20. 广东创建培训促进就业新机制(其二)

热门文章

  1. DB SQL mysql
  2. 如何为HTML5 Video载入WebVTT字幕
  3. 格式化输出的三种方式
  4. 程序员代码下的许豪杰
  5. 奇数点偶数点fft的matlab,电子科大 数字信号处理实验2_FFT的实现
  6. oracle emp imp 使用介绍
  7. 程序员如何站着每年赚 30w 美金
  8. vscode vetur 代码格式化优化设置(亲测有用)
  9. 一文解析App推广神器deeplink(深度链接)
  10. Qt通过QAxWidget来使用flash控件的问题