基于mongodb的持久字典

mongo_shelve的Python项目详细描述


现在的情况已经够够了,但现在的情况已经够了,现在的情况已经够够了,现在的情况已经够了,基于MongoDB的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性词典的持久性已经够了。``收藏。



python包含了:mod:`shelve`模块,这是一个基于:mod:`dbm`的持久字典的实现,它反过来将信息保存在本地文本文件中。我自己也用过,但对于成百上千的参赛作品来说,表现还远远不够理想插入一个新条目需要将近一秒钟的时间。

一个简单的测试帮助我意识到用MongoDB速度替换:mod:`shelve`对于那个项目来说大约是x50或更好的速度,[f1].


另一个相关的优点是,好的MongoDB服务器包括安全选项、备份系统等,所以数据比在本地文件中更安全。

最后,我对多线程几乎一无所知,但是MongoDB似乎对并发访问有很好的支持,虽然我知道:mod:`shelve`没有。



project description
====


a class:class:`mongo_shelve`的实现为一个`mongodb<;https://www.mongodb.com>;``集合提供了一个类似于'dict'的接口。支持所有常用的“dict”操作另一方面,MongoDB集合的强大接口如“delete_many”被保留下来。有关详细信息,请参阅类文档。

我当前正在Windows上使用Python3.6。我没有在其他版本或平台上测试过此代码。



警告
==


要能够使用MongoDB,我们必须连接到MongoDB服务器。它可能是我们自己的机器、托管服务等。如果您是MongoDB新手,可以使用一些教程,`this<;https://www.hongkiat.com/blog/webdev-with-mongodb-part1/>;``就是其中之一。也有许多MongoDB托管服务提供大小合适的免费沙盒,不需要花一分钱就可以进行实验。


如果您安装了MongoDB,要在本地(在Windows中)提供服务,只需运行:

。代码::bash

mongod.exe--dbpath=<;database廑path>;



有关测试的警告
=======


要能够运行测试,我们需要一个mongodb服务器来连接(我知道没有更好的方法)。如果有,请告诉我)这些测试是根据本地服务器正在运行、构建与之连接的客户端、创建测试数据库/集合、填充它们、访问存储的信息而编写的,最后将它们全部擦除。



Usage Example
==



下面的示例表明本地MongoDB服务器正在运行(因此是IP 127.0.0.1),并且处于默认的27017端口中。


。代码::python

ms=mongo shelve(col=col,keyfield='filename')

#更新信息
ms['mybestjoke.txt']=dict(size=14732)
print(“存储的信息:%s”%ms['mybestjoke.txt'])

存储的是%s“%(键,数据))

小于1KB的文件。
ms.delete_many({'size':{“$lt”:1024})

准则:脚注

…[f1]我使用的是最不精致的“dbm.dumb”管理器。
理论上,如果使用伯克利的“dbm.ndbm”或gnu的“dmb.gnu”性能会更好,但当时我无法安装它们。

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

推荐PyPI第三方库


热门话题
java没有到主机连接的路由(2)(Errno::EHOSTUNREACH)   java如何在Selenium Webdriver中阻止广告   java如何检查矩形棱柱体是否完全嵌套在另一个棱柱体中,包括旋转   java更新场景和线程   java使用log4j将日期添加到日志文件名   java在@Rule运行之前,如何使用Guice在Junit测试用例中注入依赖项?   java从Apache的POI工作簿获取InputStream   java openFileOutput:如何在/data/data…外部创建文件。。。。路径   java在运行时将war部署到OSGI中   java SimpleDataFormat解析返回错误的值   在java中通过UDP发送C++结构   java如何将写入文件的数据通过管道传输到调用应用程序?   JAVAlang.RuntimeException:注册MBean、com时发生异常。刻度7。卡桑德拉。佩洛普斯。pool:type=PooledNodemy\u keyspacelocalhost   java字体搭配pdfbox和boxable