由于列表中存在相同实例导致insert_many报错解决办法
在使用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报错解决办法相关推荐
- python向数据库插入字符串数据,字符串中含有单引号,入库报错解决办法
目录 问题 解决办法 示例 问题 最近处理部分数据,某些字段的数据中,含有单引号(含有双引号应该没有影响,如果报错,解决办法和单引号的方式类似)入库是会报错. 针对这一问题,解决办法如下: ...
- SQL Server中TOP子句可能导致的问题以及解决办法
SQL Server中TOP子句可能导致的问题以及解决办法 参考文章: (1)SQL Server中TOP子句可能导致的问题以及解决办法 (2)https://www.cnblogs.com/firs ...
- Log4j2 日志 依赖 jar包 缺失 导致启动报错 解决方法
Log4j2 日志 依赖 jar包 缺失 导致启动报错 解决方法. 一个Java老项目,更新了日志工具,升级为Log4j2,在引入log4j-api-2.14.0.jar 和log4j-core-2. ...
- idea安装及项目导入过程中pom报错解决办法
1.idea安装可用破解版或者在淘宝上买正版账号(20多块钱一年,挺便宜的) 2.pom报错解决办法: 在项目导入过程中pom报错: 原因:相关jar包未下载完.(下载速度慢,因为下载的链接是国外的节 ...
- 亲测有效:spring boot中parent节点报错解决办法
今天中午开始学习spring boot,结果一中午都卡在了pom.xml配置上.因为spring boot需要引入一个parent project, pom.xml文件中: <!-- Inher ...
- c++中结构体套结构体用 = {0}初始化编译报错解决办法(用memset或者={})(error: invalid conversion)
我这有个结构体: VENC_CHN_ATTR_S venc_chn_attr; /* the attribute of the venc chnl*/ typedef struct rkVENC_CH ...
- python爬虫如何连接数据库_手把手教你如何在Navicat中如何新建连接数据库及相关报错解决方法...
前几天给大家分享了如何安装Navicat,没有来得及上车的小伙伴可以戳这篇文章:手把手教你安装Navicat--靠谱的Navicat安装教程.今天给大家分享一下Navicat的简单使用教程,具体的教程 ...
- 安装wps导致 application/kset 上传文件类型报错解决办法
电脑中安装wps上传execl时,上传.xls文件时 报错 application/kset 文件类型不正确 打印array() print_r($_FILES ) 结果如下: Array ( [us ...
- JupyterLab中Kernel相关使用技巧和报错解决
感觉JupyterLab使用的人还是比较少,大家都很喜欢Jupyter Notebook,然后Lab的推广做的也就一般,还没有在Annaconda中默认安装,所以有时候遇到什么坑就很头疼. 原本像往常 ...
最新文章
- 第十五章 动态规划——最优二叉搜索树
- go 二进制程序守护_GO-环境设置
- 使用SAP API portal进行SAP SuccessFactors的API测试
- SpringBoot-探索回顾Spring框架本质
- *p++和*++p_2020年P气瓶充装新版试题及P气瓶充装找答案
- 机器学习算法之CART(分类回归树)概要
- 模具计算机辅助设计笔试题,模具CADCAM试卷
- python下载的库包放_python下载的库包存放路径
- 2.1 InnoDB存储引擎(概述、版本、体系结构)
- 可调稳压电源lm317实验报告_LM317可调稳压电源
- CS-Notes 知识清单 备战版
- linux看磁带内容命令,Linux下磁带管理命令
- Qt 内存管理与布局管理器
- 博客从CSDN迁移至简书啦
- jumpserver详解(六)——jumpserver luna组件安装
- 定义QTimer引发的异常:double free or corruption (!prev)
- 转贴–人生的职业规划:让自己变得重要
- 东北大学继续教育学院计算机辅助数控编程,计算机辅助数控编程B卷李虎.doc离线.doc...
- 圣斗士星矢重生服务器维护,圣斗士星矢重生新版本更新内容介绍 新版将上线...
- 广东创建培训促进就业新机制(其二)