MongoDB支持的Python类似字典的接口
项目描述
因此,你正在使用dict存储一些键值对,但你的数据变得比你内存大,或者你希望将其持久化到磁盘?那么mongodict就是为你准备的!
因为它使用MongoDB来存储数据,所以你可以获得所有MongoDB的酷特性,如分片和副本。它使用Python标准库中的pickle模块来序列化和反序列化数据,并将所有内容以bson.Binary的形式存储在MongoDB中。你也可以提供另一个编解码器(序列化器/反序列化器)。
mongodict在Python 2.7.5和Python 3.3.2下进行了测试。
安装
非常简单
pip install mongodict
用法
因为它使用collections.MutableMapping作为其基础,你只需要更改创建你的dict的那一行。例如,只需将
>>> my_dict = {}
替换为
>>> from mongodict import MongoDict
>>> my_dict = MongoDict(host='localhost', port=27017, database='my_dict',
collection='store')
然后就可以像普通的dict一样使用它了
>>> my_dict['python'] = 'rules'
>>> print my_dict['python']
rules
>>> del my_dict['python']
>>> print my_dict['python']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "mongodict.py", line 82, in __getitem__
raise KeyError(key)
KeyError: u'python'
>>> my_dict['spam'] = 'eggs'
>>> my_dict['ham'] = 'damn'
>>> for key, value in my_dict.items():
... print '{} = {}'.format(key, value)
...
spam = eggs
ham = damn
如果您想使用其他编解码器,您应该在初始化类时传递序列化和反序列化函数。例如,要使用JSON
>>> import json
>>> json_dict = MongoDict(host='localhost', port=27017,
database='json_dict', collection='store',
codec=(json.dumps, json.loads))
>>> # use json_dict as usual
祝您使用愉快!:-)
认证
如果您想使用连接到数据库的MongoDB的认证,您只需要提供一个
from mongodict import MongoDict
my_dict = MongoDict(host='localhost', port=27017, database='mydb',
collection='mongodict',
auth=('my username', 'my password'))
为什么不使用Redis?
Redis是“远程目录服务器”——它是一块优秀的软件,如果所有数据都适合内存,它可以完成这项工作。另一方面,MongoDB已经拥有成熟的分片和副本集功能。因此,如果您需要存储大量不适合内存的键值对,mongodict可以解决您的问题。
贡献
您可以使用或不需要tox来运行测试。
没有tox
这是最简单的方法:您将只测试一个Python版本。为此,只需执行
mkvirtualenv --no-site-packages mongodict-without-tox pip install -r requirements/develop.txt make test
使用tox
使用tox,您可以测试多个Python版本(目前为2.7和3.2)。您只需要创建一个虚拟环境,安装并运行它
mkvirtualenv --no-site-packages tox-for-mongodict pip install tox tox
tox将为每个Python版本创建一个虚拟环境,安装需求,然后为每个版本运行测试。请注意,您需要系统中的python二进制文件(2.7和3.2)来运行测试。
许可证
它受GPL版本3许可。
项目详情
mongodict-0.3.1.tar.gz的散列
| 算法 | 散列摘要 | |
|---|---|---|
| SHA256 | 9c66d65fd1cd3e1e03fed9d5c11c6e3603a10b2a60c9dbd703f58ca15d55655b |
|
| MD5 | 57f8bb308156c1891d790bb107eb4f9d |
|
| BLAKE2b-256 | aa2764b9b903ed125a4c26dd9fc28921e90bfd3eca0bdce91ce8faac502e61e7 |