python mongo dict,一个类似字典的类,自动存储在mongo中,具有查询功能。
pymdict的Python项目详细描述
安装
目前只支持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