mongodb支持的python类dict接口

mongodict的Python项目详细描述


所以您将一些键值存储在dict中,但是您的数据变得比 你的内存还是要保存在磁盘上?那么mongodict就是 你!

当它使用MongoDB来存储数据时,您会发现 MongoDB一些东西,比如碎片和复制品。它使用 python标准库中的pickle模块 序列化/反序列化数据,并将所有数据存储为MongoDB中的bson.binary。 您还可以提供另一个编解码器(序列化器/反序列化器)。

mongodictPython 2.7.5Python 3.3.2

安装

简单到:

pip install mongodict

用法

因为它使用 collections.MutableMapping 作为它的基础,您只需要更改创建dict的行。 对于Instace,只需更换:

>>> 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查询中,但作为 MongoDB的服务器把它能做的一切都放在内存中, 可能不会有问题(如果你的工作组总是在 记忆)。

身份验证

如果要使用MongoDB对数据库的身份验证,MongoDict 连接到,只需提供一个auth参数,如下所示 示例:

from mongodict import MongoDict


my_dict = MongoDict(host='localhost', port=27017, database='mydb',
                    collection='mongodict',
                    auth=('my username', 'my password'))

为什么不去Redis?

Redis是“远程目录服务器”-这是一个很好的部分 如果所有的数据都存储在内存中,就可以完成这项工作。在另一边, MongoDB已经有成熟的分片和副本集 特征。所以,如果需要存储大量不适合的键值对 内存,mongodict可以解决 问题。

注意

mongodict不具有相同的 API其他关键价值软件 (就像memcached)。缺少一些功能 直接与这种软件竞争(现在我们只有 dict-类似行为),但我计划很快添加它。

贡献

你可以在有或没有的情况下运行测试 tox

无毒物

这是最简单的方法:只测试一个python版本。待办事项 它,只需执行:

mkvirtualenv --no-site-packages mongodict-without-tox
pip install -r requirements/develop.txt
make test

毒性

使用tox可以测试 不止一个python版本(目前用于2.7和3.2)。你只需要 创建一个virtualenv,安装并运行它:

mkvirtualenv --no-site-packages tox-for-mongodict
pip install tox
tox

tox将创建一个 virtualenv对于每个python版本,安装需求,然后运行测试 为他们每个人。注意,您需要在 运行测试的系统(2.7和3.2)。

作者

本软件由 Álvaro Justen (aka Turicas)。 请通过alvarojusten与我联系,电话:gmaildotcom

许可证

它是根据GPL version 3授权的。

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

推荐PyPI第三方库


热门话题
java编辑并重新运行spring引导单元测试,无需重新加载上下文即可加快测试速度   为什么我不能做演员?   java为什么是线程。join通常用于停止安卓中的线程   java从weblogic服务器调用JSON POST REST服务时收到400:错误请求   java在DeviceAdmin模式禁用时设置身份验证?   java SortedMap的keySet()能否始终安全地强制转换到SortedSet?   安卓 java。lang.NoSuchMethodException可包裹类   java JOGL库安装   javatomcat内存管理   java使用getString()中的变量   java将最小星号设置为评级栏   Java中字符串相等的println()方法。。。它到底是如何工作的?   java如何从文本中输出的数组中放入随机图像