3

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

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

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

4

3 回答 3

3

Python 自带数据库... http://docs.python.org/library/sqlite3.html

于 2012-09-07T17:11:12.903 回答
1

如果您只是想将数据保存到磁盘,我认为您正在寻找的是 python shelve 。它也几乎 100% 兼容 dict 接口,因此您只需更改很少的代码。

于 2012-09-07T17:18:34.987 回答
1

ZODB 将满足您的需求。您可以在那里完全按照您已有的方式构建数据。您必须切换到持久映射,而不是使用内置字典,如果它们往往很大,您可能应该从一开始就从 btrees 开始。这里通过简单的示例和教程进一步阅读是一个很好的起点。正如您将看到的,ZODB 不提供一些类似 SQL 的访问语言。但是,由于您似乎已经将数据结构化以适合某些字典,因此您可能无论如何都不会错过。与普通搁置相比,ZODB 还提供在将数据写入磁盘之前动态压缩数据。总的来说,它提供了比搁置更多的选择,并且与此相比现在显示出明显的缺点,所以我可以热烈推荐它。一年前我改用它,因为典型的关系数据库与 ORM 一起执行非常慢,尤其是对于插入或更新操作。使用 ZODB,我的速度提高了大约一个数量级,因为应用程序和数据库之间没有通信开销,

于 2012-09-26T22:31:14.360 回答