python mongo dict,一个类似字典的类,自动存储在mongo中,具有查询功能。

pymdict的Python项目详细描述


Pymdict

https://badge.fury.io/py/pymdict.svghttps://travis-ci.org/ipazc/pymdict.svg?branch=masterhttps://coveralls.io/repos/github/ipazc/pymdict/badge.svg?branch=master

高级python mongo dict。 基于mongodb的python字典。它允许将集合视为python中的字典,具有广泛的功能,例如允许基本查询、批量操作和版本控制(fork)。

安装

目前只支持python3.4以后的版本。它可以通过pip安装:

$ pip3 install pymdict

用法

要运行,需要MongoDB服务器。

基于mongo的字典可以实例化如下:

>>>frompymdict.mongo_dictimportMongoDict>>>>>>m=MongoDict("custom_id",mongo_host="localhost",mongo_port=27017)

一旦实例化了m,它就可以用作普通字典。

>>>m["key"]="value">>>m[44]="value2">>>m["key2"]="value3">>>m["number"]=44>>>print(list(m.keys()))["key",44,"key2, "number"]>>>forkey,valueinm.items():...print("{}: {}".format(key,value))key:value44:value2key2:value3number:44

此外,还有一些高级功能,如查询:

>>>forkey,value,_inm('key % ey'):...print("{}: {}".format(key,value))key:valuekey2:value3>>>forkey,value,_inm('key % ey or value = 44'):...print("{}: {}".format(key,value))key:valuekey2:value3number:44

查询还支持使用sub dict元素进行查询:

>>>m["first"]={"example":44}>>>m["second"]={"example":45}>>>m["third"]={"example":46}>>>forkey,value,_inm('value.example > 44 and value.example < 46'):...print("{}: {}".format(key,value))second:45

(TOdo:查看wiki页面以了解有关查询语法的更多信息)

注意,所有存储和删除都存储在MongoDB中。这意味着每次添加、编辑和删除都至少有一个到MongoDB后端的连接。为了优化它,可以使用批量操作在单个连接中包装这样数量的操作:

>>>withm.bulk(buffer_size=100)asm:...forxinrange(2000):...m["key{}".format(x)]={"example":x}

此外,mongo dict可以分叉而无需复制其内容。如果目标dict非常大并且需要一个副本,这一点特别有用。注意,fork是一个即时进程,它允许在不修改原始字典的情况下重写或删除元素。它是通过对词典应用版本控制技术来实现的,目前仍处于实验状态。

(TOdo:有关wiki页面中分叉和版本控制的更多信息)

>>>m['foo']="bar">>>fork=m.fork()>>>print(fork['foo'])bar>>>fork['foo']="foo">>>print(fork['foo'],m['foo'])foobar

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

推荐PyPI第三方库


热门话题
java在滚动视图中,我需要将图像高度设置为设备的活动高度   JavaSpring引导忽略应用程序中的数据源url。yml   java如何使用常量输入多个@CrossOrigins?   java无法在Android Stduio[libGDX]中“构建APK”   java在哪里设置EJB3客户端的webservice主机名   java不能在j2me应用程序中使用图像   java从对象中检索bean属性值   java在Microsoft botframework Android虚拟助手客户端中提供语音通道机密   匿名类中的java限制   java如何判断是否安装了JRE或JDK   java字符串和循环实践测试   tomcat中的java springboot循环依赖