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 |