用于在bson和json之间转换的库。

python-bsonjs的Python项目详细描述


View build status
Info:See github for the latest source.
Author:Shane Harvey <shane.harvey@mongodb.com>

关于

用于python的快速bson到mongodb扩展json转换器 libbson

安装

python bsonjs可以与pip

一起安装
$ python -m pip install python-bsonjs

示例

>>>importbsonjs>>>bson_bytes=bsonjs.loads('{"hello": "world"}')>>>bson_bytes'\x16\x00\x00\x00\x02hello\x00\x06\x00\x00\x00world\x00\x00'>>>bsonjs.dumps(bson_bytes)'{ "hello" : "world" }'

使用bsonjs和pymongo插入rawbsondocument。

>>>importbsonjs>>>frompymongoimportMongoClient>>>frombson.raw_bsonimportRawBSONDocument>>>client=MongoClient("localhost",27017,document_class=RawBSONDocument)>>>db=client.test>>>bson_bytes=bsonjs.loads('{"_id": 1, "x": 2}')>>>bson_bytes'\x15\x00\x00\x00\x10_id\x00\x01\x00\x00\x00\x10x\x00\x02\x00\x00\x00\x00'>>>result=db.test.insert_one(RawBSONDocument(bson_bytes))>>>result.inserted_id# NOTE: inserted_id is None>>>result.acknowledgedTrue>>>raw_doc=db.test.find_one({'x':2})>>>raw_doc.raw==bson_bytesTrue>>>bsonjs.dumps(raw_doc.raw)'{ "_id" : 1, "x" : 2 }'

速度

在将bson解码为 json和将json编码为bson。见benchmark.py

$ python benchmark.py
Timing: bsonjs.dumps(b)
10000 loops, best of 3: 0.110911846161
Timing: json_util.dumps(bson.BSON(b).decode())
10000 loops, best of 3: 1.46571397781
bsonjs is 13.22x faster than json_util

Timing: bsonjs.loads(j)
10000 loops, best of 3: 0.0628039836884
Timing: bson.BSON().encode(json_util.loads(j))
10000 loops, best of 3: 0.683200120926
bsonjs is 11.72x faster than json_util

从源安装

python bsonjs支持cpython 2.6、2.7和3.3+。

编译器

必须为每个版本的python分别构建python bsonjs。打开 这意味着您必须使用与python版本相同的c编译器 用建造的。

来源

注意,这个存储库包含一个git submodule。必须初始化 子模块使用:

$ git clone --recursive https://github.com/mongodb-labs/python-bsonjs.git

或者,如果您的git版本没有clone --recursive

$ git clone https://github.com/mongodb-labs/python-bsonjs.git
$ cd python-bsonjs
$ git submodule update --init --recursive

安装

正确下载源代码后,生成并安装软件包:

$ python setup.py install

测试

运行测试套件:

$ python setup.py test

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java流/下载文件,无需在Spring Boot中保留内存   kotlin/java是否有类似TryParse()的东西?   java Spring引导找不到用户类型的属性ID   java Spring 2到Spring 3的迁移:一个控制器用于多个视图   java包含多个程序包名为“安卓”的库。支持图样可提取'   java spring JPA是否支持自定义值框架?   java转义出基于文本字段的搜索栏   java AAPT:错误:未找到样式属性“安卓:attr/WindowsPlashCreenBackground”   java从文本文件中读取纬度和经度   java哪里可以找到如何使用排序的示例。顺序ignorecase(),其中nullhandling nulls last用于自定义Spring JPA如何提供查询   尝试使用Dialogflow上的Webhook动态给出响应时,java获取Webhook响应错误(206)   如何在java中替换匹配的字符串?   java模拟数学的最大价值。随机的   java Spring RestTemplate GET请求未给出正确响应   春爪哇。lang.IllegalArgumentException   java系统。load()永远不会发生   java剪辑循环不工作   java如何从maven构建中删除staxapi   java ThreadPoolExecutor的排队行为是否可以自定义,以更喜欢创建新线程而不是排队?