python对象的类似数据库的可搜索结构



我正在寻找一个类似数据库的结构,它可以容纳python对象,每个对象都有各种可以搜索的字段。一些搜索会产生ZODB,但我不确定这是否是我想要的。

为了解释,我有一些对象可以以给定的文件格式从磁盘写入/读取。我想要一种方法来组织和搜索这些对象的许多集合。目前,我将它们存储在嵌套字典中,这些字典是根据文件系统和文件名的结构填充的。

我想要一个更像数据库的方法,但我认为我不需要数据库。我希望能够将结构保存到磁盘上,但不想连接服务器或类似的东西。也许我只是想使用numpy的结构化数组?http://docs.scipy.org/doc/numpy/user/basics.rec.html

Python附带了一个数据库。。。http://docs.python.org/library/sqlite3.html

如果您只是想将数据保存到磁盘,那么我认为您想要的是python搁置。它几乎100%符合dict接口,因此您只需更改很少的代码。

ZODB将执行您想要的操作。你可以在那里构建你的数据,就像你已经拥有的一样。您将不得不切换到持久映射,而不是使用内置dicts,如果它们往往很大,您可能应该从一开始就使用btrees。以下是一些很好的起点,可以通过简单的例子和教程进行进一步的阅读。正如您将看到的,ZODB并没有提供一些类似SQL的访问语言。但是,看起来你已经将数据结构化以适应一些词典,你可能无论如何都不会错过这一点。与普通搁置相比,ZODB还提供了在将数据写入磁盘之前动态压缩数据的功能。总的来说,它提供了比搁置更多的选项,而且与搁置相比,现在显示出了显著的缺点,所以我可以热烈推荐它。我一年前就改用了它,因为典型的关系数据库和ORM的执行速度非常慢,尤其是在插入或更新操作中。有了ZODB,我在这里的速度快了一个数量级,因为应用程序和数据库之间没有通信开销,因为数据库已经是应用程序的一部分了。

最新更新