Python之读取MongoDB导出的BSON文件
BSON是一种类似于JSON的二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型等。
BSON主要被用作MongoDB数据库中的数据存储和网络传输格式,能用来表示简单数据结构、关联数组(MongoDB中称为“对象”或“文档”)以及MongoDB中的各种数据类型。
本文将讲述如何使用Python来读取MongoDB导出的BSON文件。
使用MongoDB导出BSON文件
使用Studio 3T软件查看数据库,其中testdb中的内容如下:
我们使用Studio 3T软件的Export功能,将该数据库的内容以BSON格式导出,如下图:
导出文件成功后,我们解压压缩包,即可获得teacher.bson文件。
bson模块读取BSON文件
我们使用bson
文件来读取teacher.bson文件,代码如下:
# -*- coding: utf-8 -*-
import bson
bson_file = open('teacher.bson', 'rb')
bson_data = bson.loads(bson_file.read())
print(bson_data)
输出结果如下:
{'_id': b'5f5f9304d18befbe1149fdba', 'name': 'zhanshan', 'age': 25}
代码只能读取BSON文件的第一个数据!这是什么原因呢?
查看bson.loads源代码,如下:
def loads(data):"""Given a BSON string, outputs a dict."""return decode_document(data, 0)[1]
在源代码中,我们发现该函数确实只返回了第一个数据。这样的结果不能让人满意。
那么解决办法是什么呢?
使用pymongo读取BSON文件
我们先安装pymongo模块,读取teacher.bson文件的代码如下:
# -*- coding: utf-8 -*-
import bson
bson_file = open('teacher.bson', 'rb')
bson_data = bson.decode_all(bson_file.read())
print(type(bson_data))
for data in bson_data:print(data)
输出结果如下:
<class 'list'>
{'_id': ObjectId('5f5f9304d18befbe1149fdba'), 'name': 'zhanshan', 'age': 25}
{'_id': ObjectId('5f5f9304d18befbe1149fdbb'), 'name': 'lisi', 'age': 36}
{'_id': ObjectId('5f5f9304d18befbe1149fdbc'), 'name': 'wangwu', 'age': 27}
现在我们已经读取了teacher.bson中的全部数据!
本文来自于笔者在工作中碰到的一个读取BSON文件的困惑,故记录于此。
更多阅读
程序运行慢?你怕是写的假 Python
让 Pandas DataFrame 性能飞升 40 倍
用 PyQt 打造具有专业外观的GUI(上)
特别推荐
程序员摸鱼指南
为你精选的硅谷极客资讯,
来自FLAG巨头开发者、技术、创投一手消息
点击下方阅读原文加入社区会员
Python之读取MongoDB导出的BSON文件相关推荐
- python 导出大量数据到excel_怎么在python中将大量数据导出到Excel文件
怎么在python中将大量数据导出到Excel文件 发布时间:2021-01-16 11:09:40 来源:亿速云 阅读:76 作者:Leah 这期内容当中小编将会给大家带来有关怎么在python中将 ...
- c++读取txt文件中的数字_在Python中读取包中的数据文件的三种方式
我们知道,写Python代码的时候,如果一个包(package)里面的一个模块要导入另一个模块,那么我们可以使用相对导入: 假设当前代码结构如下图所示: 其中test_1是一个包,在util.py里面 ...
- Python代码读取Excel(.xlsx)文件并保存JSON文件
策划需求,要求统计所有xlsx文件中的数据.并将其统一处理归纳到一个文件中,方便阅读. 这时候Python相对C#来说,优势体现出来了.当然C#还是很强的,只是针对某些功能,选择合适的工具. 思路:读 ...
- python二进制文件 删除尾部数据_在Python中读取和切片二进制数据文件的最快方法...
我有一个处理脚本,用于提取"uint16"类型的二进制数据文件,并一次以6400块的形式进行各种处理.该代码最初是用Matlab编写的,但由于分析代码是用 Python编写的,我们 ...
- python怎么读取excel-python如何读写excel文件
python读写excel的方式有很多,不同的模块在读写的方法上稍有区别: 用xlrd和xlwt进行excel读写: 用openpyxl进行excel读写: 用pandas进行excel读写: 为了方 ...
- python读取sav文件_在Python中读取SPSS(.sav)文件时,获取“title already used as a name or title”错误...
我正在读一个SPSS文件(.sav).我下面的代码可以读取.sav文件.但是,我遇到了一个非常奇怪的错误.当我试图读取另一个.sav文件时,它会给出以下错误Traceback (most recent ...
- python open读取_Python:open的文件读取操作,utf-8,UnicodeDecodeError
简要目录: open函数 将文件设置为utf-8编码格式 UnicodeDecodeError f.read() 和 f.read(size) f.readline() 和 f.readlines() ...
- Python实现读取多个/批量txt文件合并成一个txt(示例为tcga数据处理)
本程序功能 将tcga数据的批量txt文件合并成一个txt. 如下: 原始的第一个txt(代表一个病人)的数据内容 合并之后的txt数据,基因名不变,只是把病人的表达量收集到一起 操作详细步骤 本人测 ...
- python如何读取百万级的csv文件-Python如何读取数据量百万级的CSV文件数据?
是时候安利我们的开源库:Mars.Mars DataFrame 可以用来加速 pandas 执行,即使在单机.而代码几乎无需改动. 以下代码都是在我的笔记本上跑的. 任务一:只读取 CSV 文件 pa ...
最新文章
- Markdown拾遗
- 网站的高性能架构--web前端优化
- 可视化应用实战案例:metacoder-相关进化树图的绘制
- 为什么操作系统会有随机性
- word List18
- php函数查询sprintf,PHPsprintf函数用例解析
- go数据结构与算法| 稀疏数组
- 编写python代码估算sin(x)的值
- QFileInfoList
- 小米回应“米家”商标争议;人人 App 回归社交市场;TiDB 2.1.19 发布| 极客头条...
- HDU2024 C语言合法标识符【文本处理】
- Host localhost is not allowed to connect to mysql server解决方法
- 电脑是个神奇的东西!
- 十月第一周学习进度条
- grid 安装失败 卸载grid 实操
- 职称计算机word中文字处理,职称计算机Word2003中文字处理考试大纲
- 携程一面(2021-1-26):凉经。面试职位:后台开发工程师(2021届应届生)
- android播放3gp格式,Android – 无法播放任何视频(mp4 / mov / 3gp /等)?
- 攻克弹唱第七课(如何弹奏neon)
- Android最全的屏幕适配
热门文章
- 空间,线性空间,赋范空间,内积空间和希尔伯特空间的区别
- 微信企业号(公众号)开发流程汇总
- 【关于听任大佬的讲话的深刻感悟】
- Java二维码生成工具类
- Thinkphp6 Malformed UTF-8 characters, possibly incorrectly encoded in
- Java模拟登录强智教务系统分析思路
- unity获取android内存大小,使用SystemInfo类获取Unity3D运行设备的各类信息(CPU类型,显卡类型等)...
- 红孩儿编辑器模块设计7
- docker-compose 部署shipyard
- 公司app上架正规要求需要办理icp许可证