我正在寻找一个类似数据库的结构,它可以容纳python对象,每个对象都有各种可以搜索的字段。有些搜索会产生ZODB,但我不确定这是我想要的。
为了解释,我有可以以给定文件格式从磁盘写入/读取的对象。我想要一种组织和搜索这些对象的方法。目前,我将它们存储在嵌套字典中,这些字典根据文件系统和文件名的结构进行填充。
我想要一个更像数据库的方法,但我认为我不需要数据库。我希望能够将结构保存到磁盘,但不想连接服务器或类似的东西。 也许我只是想使用numpy的结构化数组? http://docs.scipy.org/doc/numpy/user/basics.rec.html
答案 0 :(得分:3)
Python附带了一个数据库...... http://docs.python.org/library/sqlite3.html
答案 1 :(得分:1)
如果您只想将数据保存到磁盘,我认为您正在寻找的是python shelve。它几乎100%兼容dict接口,因此您必须更改非常少的代码。
答案 2 :(得分:1)
ZODB会做你想要的。您可以完全按照已有的数据构建数据。你不必使用内置的dicts,而是必须切换到持久性映射,如果它们往往很大,你可能应该从头开始使用btree。 Here是一个很好的起点,可以通过简单的示例和教程进一步阅读。正如您将看到的,ZODB不提供类似SQL的访问语言。但是,由于您已经将数据结构化为适合某些字典,因此您可能不会错过任何字典。与普通货架相比,ZODB还提供了在将数据写入磁盘之前即时压缩数据。一般来说,它提供了比搁置更多的选项,并且现在显示出明显的下降,因此我可以热烈推荐它。我在一年前切换到它,因为典型的关系数据库与ORM一起执行的速度非常慢,特别是对于插入或更新操作。使用ZODB,我的速度提高了一个数量级,因为应用程序和数据库之间没有通信开销,因为数据库已经是应用程序的一部分。