如何使用 insert_many 安全地忽略重复的键错误

2023-11-29

当将 insert_many 与 pymongo 一起使用时,我需要忽略重复插入,其中重复项基于索引。我在 stackoverflow 上看到过这个问题,但没有看到有用的答案。

这是我的代码片段:

try:
    results = mongo_connection[db][collection].insert_many(documents, ordered=False, bypass_document_validation=True)
except pymongo.errors.BulkWriteError as e:
    logger.error(e)

我希望 insert_many 忽略重复项并且不抛出异常(这会填满我的错误日志)。或者,是否可以使用单独的异常处理程序,以便我可以忽略错误。我想念“w=0”...

Thanks


您可以通过检查产生的错误来处理这个问题BulkWriteError。这实际上是一个具有多个属性的“对象”。有趣的部分在details:

import pymongo
from bson.json_util import dumps
from pymongo import MongoClient
client = MongoClient()
db = client.test

collection = db.duptest

docs = [{ '_id': 1 }, { '_id': 1 },{ '_id': 2 }]


try:
  result = collection.insert_many(docs,ordered=False)

except pymongo.errors.BulkWriteError as e:
  print e.details['writeErrors']

第一次运行时,这将给出错误列表e.details['writeErrors']:

[
  { 
    'index': 1,
    'code': 11000, 
    'errmsg': u'E11000 duplicate key error collection: test.duptest index: _id_ dup key: { : 1 }', 
    'op': {'_id': 1}
  }
]

在第二次运行时,您会看到三个错误,因为所有项目都存在:

[
  {
    "index": 0,
    "code": 11000,
    "errmsg": "E11000 duplicate key error collection: test.duptest index: _id_ dup key: { : 1 }", 
    "op": {"_id": 1}
   }, 
   {
     "index": 1,
     "code": 11000,
     "errmsg": "E11000 duplicate key error collection: test.duptest index: _id_ dup key: { : 1 }",
     "op": {"_id": 1}
   },
   {
     "index": 2,
     "code": 11000,
     "errmsg": "E11000 duplicate key error collection: test.duptest index: _id_ dup key: { : 2 }",
     "op": {"_id": 2}
   }
]

所以你需要做的就是过滤数组中的条目"code": 11000然后只有当里面有其他东西时才会“恐慌”

panic = filter(lambda x: x['code'] != 11000, e.details['writeErrors'])

if len(panic) > 0:
  print "really panic"

这为您提供了一种忽略重复键错误的机制,但当然要注意实际上存在问题的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 insert_many 安全地忽略重复的键错误 的相关文章

  • 从正在运行的 python 脚本检测优化标志是否为 -O 或 -OO

    有时我想生成一个子进程 其优化标志与启动父进程时使用的优 化标志相同 我可以使用类似的东西 optimize not debug 但这样我就可以匹配两者 O and OO flags 是否有一些 python 内部状态包含该信息 经过一番深
  • 如何确定非阻塞套接字是否真正连接?

    这个问题不仅限于Python 这是一个一般的套接字问题 我有一个非阻塞套接字 想要连接到一台可访问的机器 在另一端 该端口不存在 为什么 select 仍然成功 我预计会超时 sock send 因管道损坏而失败 select 之后如何确定
  • Tensorflow 可变图像输入大小(自动编码器、放大......)

    Edit WARNING不建议使用不同图像大小的图像 因为张量需要具有相同的大小才能实现并行化 我一直在寻找解决方案 了解如何使用不同大小的图像作为神经网络的输入 Numpy 第一个想法是使用numpy 然而 由于每个图像的大小不同 我无法
  • 如何从 PyCharm 项目中获取我的“exe”[重复]

    这个问题在这里已经有答案了 通过 PyCharm 在 Python 上编写一些项目 我想从中获取一个exe文件 我尝试过 另存为 gt XXX exe 但是 当我尝试执行它时出现错误 此类操作系统不支持该文件 附注 我有win7 x64 它
  • python 中分割字符串以获得一个值?

    需要帮助 假设我在名为 input 的变量中有一个字符串 Sam Person name kind input split 通过执行上述操作 我得到两个具有不同字符串 Sam 和 Person 的变量 有没有办法只获取第一个值 name S
  • 优化 Keras 以使用所有可用的 CPU 资源

    好吧 我真的不知道我在说什么 所以请耐心听我说 我正在使用 Theano 后端运行 Keras 以在 MNIST 图像上运行基本的神经网络 目前只是一个教程 过去 我一直使用我的旧 HP 笔记本电脑 因为我有 Windows 和 Ubunt
  • PIL Image.size 返回相反的宽度/高度

    使用PIL确定图像的宽度和高度 在特定图像上 幸运的是只有这一个 但这很麻烦 从 image size 返回的宽度 高度是相反的 图片 http storage googleapis com cookila 533ebf752b9d1f7c
  • 如何限制Django CreateView中ForeignKey字段的选择?

    我有一个沿着这些思路的模型结构 models py class Foo models Model class Bar models Model foo models ForeignKey Foo class Baz models Model
  • 在径向(树)网络x图中查找末端节点(叶节点)

    给定下图 是否有一种方便的方法来仅获取末端节点 我所说的端节点是指那些具有一个连接边的到节点 我认为这些有时被称为叶节点 G nx DiGraph fromnodes 0 1 1 1 1 1 2 3 4 5 5 5 7 8 9 10 ton
  • 如何通过双击在浏览器中打开 ipynb 文件

    以前 我安装了 Canopy 当时 我只需双击 ipynb 文件并在浏览器中打开它们即可 但是 后来我需要Anaconda 一旦我安装了它 这个功能就没有了 现在我只希望能够简单地双击 ipynb 文件 然后该文件就会在 Firefox 中
  • spacy 如何使用词嵌入进行命名实体识别 (NER)?

    我正在尝试使用以下方法训练 NER 模型spaCy识别位置 人 名和组织 我试图理解如何spaCy识别文本中的实体 但我无法找到答案 从这个问题 https github com explosion spaCy issues 491在 Gi
  • 如何使用Python的super()来更新父值?

    我对继承很陌生 之前所有关于继承和 Python 的 super 函数的讨论都有点超出我的理解 我当前使用以下代码来更新父对象的值 usr bin env python test py class Master object mydata
  • 为什么我用 beautifulSoup 刮的时候有桌子,但没有 pandas

    尝试抓取条目页面转换为制表符分隔格式 主要拉出序列和 UniProt 登录号 当我跑步时 url www signalpeptide de index php sess m listspdb bacteria s details id 10
  • 将 Pandas 列中的列表拆分为单独的列

    这是我在 pandas 数据框中的 特征 列 Feature Cricket 82379 Kabaddi 255 Reality 4751 Cricket 15640 Wildlife 730 LiveTV 13 Football 4129
  • 将输入发送到 python 子进程而不等待结果

    我正在尝试为一段代码编写一些基本测试 该代码通常通过 stdin 无休止地接受输入 直到给出特定的退出命令 我想检查程序是否在给出一些输入字符串时崩溃 经过一段时间来考虑处理 但似乎无法弄清楚如何发送数据而不是陷入等待我不知道的输出关心 我
  • conda-env list / conda info --envs 如何查找环境?

    我一直在尝试 anaconda miniconda 因为我的用户使用随 miniconda 安装的结构生物学程序 并且作者都没有 A 考虑到可能存在其他 miniconda 应用程序 B 他们的程序将在多用户环境中使用 因此 使用 Arch
  • 在 MacO 和 Linux 上安装 win32com [重复]

    这个问题在这里已经有答案了 我的问题很简单 我可以安装吗win32com蟒蛇API pywin32特别是 在非 Windows 操作系统上 我一直在Mac上尝试多个版本pip install pywin32 都失败了 下面是一个例子 如果你
  • Flask WTForms 使用变量自动填充 StringField

    我有一个表格 我想用上一页收到的信息自动填充一些字段 但如果他们想调整它 它需要是可更改的 我正在为我的 SelectField 使用动态创建的列表 但添加 StringField 并不成功 请参阅下面的我的代码 forms py clas
  • 为什么我们应该在 def __init__(self, n) -> None: 中使用 -> ?

    我们为什么要使用 gt in def init self n gt None 我读了以下摘录来自 PEP 484 https www python org dev peps pep 0484 the meaning of annotatio
  • 使用 Python 生成类似于 Messenger 或 kik 代码的圆形二维码

    我可以使用 Python 生成圆形 QR 码 就像 Facebook Messenger 或 kik 使用的那样吗 我访问了很多网站 但找不到这种类型的二维码 默认情况下 Python 生成方形 QR 码 但在我的项目中我想要圆形 QR 码

随机推荐

  • openpyxl 和 stdev.p 名称错误

    我有一个脚本来格式化一堆数据 然后将其推送到 Excel 中 我可以在其中轻松清理损坏的数据 并进行更多分析 作为其中的一部分 我将大量数据推送到 Excel 并希望 Excel 完成一些跑腿工作 因此我将一定数量的公式放入表格中 其中大多
  • 为什么 DispatcherServlet 创建另一个应用程序上下文?

    我已经使用配置了根应用程序上下文ContextLoaderListener和上下文初始化参数contextConfigLocation 然后 JSF jsf 变量解析器访问根上下文 效果很好 现在的问题是 请求 do 正在通过Dispatc
  • 如何循环目录中的文件并更改路径并向文件名添加后缀

    我需要编写一个脚本 用不同的参数启动我的程序 我开始我的程序 MyProgram exe Data data1 txt Logs data1 Log txt 这是我想做的事情的伪代码 for each filename in Data do
  • 用于测量 Java 代码的经验计算复杂性的工具?

    我有一些 Java 代码 我希望测量它们的经验计算复杂性 有一个趋势教授以编译输入为输入的工具C C 程式 是否有类似于 trend prof 的工具 可以将编译后的 Java 程序作为输入 声纳常用 http www sonarsourc
  • LEFT JOIN 仅第一行

    我读过很多关于仅获取左连接的第一行的线程 但是 由于某种原因 这对我不起作用 这是我的结构 当然是简化的 Feeds id title content 1 Feed 1 Artists artist id artist name 1 Art
  • ASP.NET MVC:路由到 URL

    在 MVC 中获取路由的 URL 相对或绝对 的最简单方法是什么 我在 SO 上看到了这段代码 但它看起来有点冗长 并且没有枚举 RouteTable Example List
  • 您可以从 html 元素触发 Sencha Touch 中的操作/事件吗?

    我有一个 Sencha 选项卡面板 每个选项卡通过 ajax 加载 html 内容 其中一个组件是帖子 列表 访问者可以使用它再次向下钻取以阅读整个帖子 我的问题是 我可以通过html触发视图切换吗 或者我应该通过 JSON 加载帖子数据
  • Objective-C 中成员变量名称中的下划线表示什么? [复制]

    这个问题在这里已经有答案了 可能的重复 在 Objective C 中使用下划线作为属性名称前缀 我是一名 C C 开发人员 正在学习 Objective C 最近我开始学习在网上找到的教程 代码如下 interface MapDemoAn
  • android eclipse 更新,现在应用程序在尝试运行时崩溃

    我的应用程序正在运行 我没有更改源代码中的任何内容 Eclipse 已更新 现在当我尝试运行该应用程序时 它无法打开 并且会显示错误消息 您必须强制关闭它 它甚至没有像我以前见过的其他等待选项 我知道这信息很少 但这就是我所拥有的一切 这就
  • C# 事件和线程安全

    我经常听到 读到以下建议 在检查事件之前 请务必先复制该事件null并开火 这将消除事件变为线程的潜在问题null在检查 null 的位置和触发事件的位置之间的位置 Copy the event delegate before checki
  • iPhone UIViewController 内的 UINavigationController

    Steps 项目清单 创建一个名为 Nav 的项目 创建一个新的UIViewControllerBaseViewController 使用 XIB 和 FirstViewController 使用 XIB In the NavAppDele
  • 如何在Linux中操作页面缓存?

    我想知道Page Cache中缓存了哪些文件 并且想实用地释放特定文件的缓存空间 如果需要的话 我可以编写内核模块 甚至修改内核代码 有人能给我一些线索吗 首先 内核不会维护页面缓存中所有文件的主列表 因为它不需要此类信息 相反 给定一个索
  • 如何使用 PySpark 删除数据框中基于多个过滤器的列?

    我有一个单元格可以具有的有效值列表 如果一列中的一个单元格无效 我需要删除整列 我知道有删除特定列中的行的答案 但在这里我将删除整个列 即使其中的一个单元格无效 有效 无效的条件是一个单元格只能有三个值 Messi Ronaldo Virg
  • 根据浏览器语言在

    我是 HTML 新手 我想在禁用 JavaScript 时显示一条消息 所以我把消息放进去
  • 如何将字符数组转换为字符串?

    转换 C string使用 char 数组非常简单c str字符串的函数然后做strcpy 然而 如何反其道而行之呢 我有一个 char 数组 例如 char arr This is a test 转换回 string str This i
  • 在 Windows 中将 Bonjour (dns_sd.h) 库添加到 Qt

    我一直在尝试正确添加Apple提供的开源dns sd h库 我正在编写一个使用 BonjourRegistrar 类的程序 如下所示 链接文本 我已经在Mac环境上编写了我的程序 现在我正在尝试将其移植到Windows Bonjour SD
  • 在 Python 中将 .CSV 文件转换为 .DTA 文件

    我希望通过 Python 自动化将许多 CSV 文件转换为 DTA 文件的过程 DTA 文件是由 Stata 统计语言处理的文件类型 然而 我还没有找到一种方法来做到这一点 The R语言有写 dta 它允许将 R 中的数据帧转换为 dta
  • Qt 5.5 和 OpenGL:检索设备信息

    我编写了一个 Qt 5 5 应用程序 它以 QOpenGLWidget 的形式使用 OpenGL 现在我希望用户可以从应用程序中看到他们的设备信息 我的意思是 卡的名称 例如 GT 640 Vendor GPU 总内存 驱动版本 扩展列表
  • 检测没有磁盘空间iPhone SDK

    假设我需要将许多图像写入iPhone文件系统 我需要找到足够的空间将图像写入磁盘 可以使用iPhone SDK吗 对的 这是可能的 请参阅以下教程 使用强大的 google 搜索引擎找到 http iphoneincubator com b
  • 如何使用 insert_many 安全地忽略重复的键错误

    当将 insert many 与 pymongo 一起使用时 我需要忽略重复插入 其中重复项基于索引 我在 stackoverflow 上看到过这个问题 但没有看到有用的答案 这是我的代码片段 try results mongo conne