基于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中的swing组合框问题   java第二个for循环的输出   带有if-then语句的java jdbc结果集   java如何为JFrame上的所有JPanel设置可见   如何使用ApachePOI和Java代码检查Excel文件中是否存在信息   JAVA网尝试在azure中创建新bucket时发生UnknownHostException   序列化Java:不可序列化异常   java通过AS400验证连接   java安卓:在类w/o视图中调用onCreate   java在同一个键中获取Json对象和Json数组   使用Java的实时视频流?   java JSONObject在Firebase中返回null   java JPanel类,空布局,不显示组件   java在以编程方式创建架构时遇到未知数据库异常?