跳转到主要内容

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)来运行测试。

作者

此软件由Álvaro Justen(又名Turicas)编写和维护。请通过alvarojusten at gmail dot com与我联系。

许可证

它受GPL版本3许可。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

mongodict-0.3.1.tar.gz (18.3 kB 查看散列

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面