一日一技:为 pymongo 的批量插入功能进一步加速

简介: 一日一技:为 pymongo 的批量插入功能进一步加速

摄影:产品经理把豆腐切成猴头菇的神刀功

我们知道,使用 Pymongo 插入数据的时候,凑够一批数据,并调用insert_many()批量插入,速度会远远超过一条一条插入。在默认情况下,我们只给这个方法传一个参数:包含字典的列表:

import pymongo
handler = pymongo.MongoClient().example.col
datas = [
    {'name': 'kingname', 'salary': 99999999},
    {'name': 'pm', 'salary': 8888888}
]
handler.insert_many(datas)

此时,这个列表中的所有字典,会被按顺序一条一条插入到 MongoDB 的某个集合中。

实际上,如果你看 pymongo 的官方文档[1],你会发现 insert_many 还有几个默认参数:


其中参数 ordered 的作用是保证插入的顺序和列表中的字典顺序一致。如果列表中的某一个字典无法被插入,那么这个字典后面的所有数据都无法插入。

如果把 ordered 设置为 False,那么此时列表中的所有字典会被乱序插入,甚至还能够并行插入从而提高插入速度,其中一个字典有问题无法插入不会影响其它的字典,唯一的弊端就是插入到集合中的顺序可能与列表中的字典顺序不一致。

所以,如果你对插入的顺序不太在意,但对插入速度很敏感,那么你可以这样修改代码:

import pymongo
handler = pymongo.MongoClient().example.col
datas = [
    {'name': 'kingname', 'salary': 99999999},
    {'name': 'pm', 'salary': 8888888}
]
handler.insert_many(datas, ordered=False)
目录
相关文章
|
数据采集 Python
动态IP代理技术的实际使用
动态IP代理技术的实际使用
289 5
|
计算机视觉 iOS开发 MacOS
Alfred Clipboard History 回车自动粘贴失效
Alfred Clipboard History 回车自动粘贴失效
1658 0
Alfred Clipboard History 回车自动粘贴失效
|
移动开发 前端开发 应用服务中间件
解决前端H5调用后端接口出现302问题总结
解决前端H5调用后端接口出现302问题总结
9128 0
解决前端H5调用后端接口出现302问题总结
element-ui 里 el-popover 位置发生偏移
element-ui 里 el-popover 位置发生偏移
2237 0
|
12月前
Provider 是如何实现数据共享的?
Provider 是如何实现数据共享的?
235 58
|
存储 NoSQL 关系型数据库
MongoDB保姆级指南(上):七万字从零到进阶,助你掌握又一款强大的NoSQL!
MongoDB是数据库家族中的一员,是一款专为扩展性、高性能和高可用而设计的数据库,它可以从单节点部署扩展到大型、复杂的多数据中心架构,也能提供高性能的数据读写操作;而且提供了数据复制、无感知的故障自动选主等功能,从而实现数据节点高可用。
1197 6
|
前端开发
工程代码编写问题之弱约束的概念的应用如何解决
工程代码编写问题之弱约束的概念的应用如何解决
72 3
|
NoSQL 架构师 网络协议
Redis系列-15.Redis的IO多路复用原理解析(上)
Redis系列-15.Redis的IO多路复用原理解析
519 1
|
机器学习/深度学习 传感器 监控
交通信号控制优化
交通信号控制优化
320 2