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

python对象的类似数据库的可搜索结构?,python,database,Python,Database,我正在寻找一种类似数据库的结构,它可以容纳python对象,每个对象都有可以搜索的各种字段。一些搜索会产生ZODB,但我不确定这是我想要的 为了说明这一点,我有一些对象可以以给定的文件格式从磁盘写入/读取。我想要一种方法来组织和搜索这些对象的许多集合。目前,我将它们存储在嵌套字典中,这些字典是根据文件系统的结构和文件名填充的 我想要一个更像数据库的方法,但我不认为我需要一个数据库。我希望能够将结构保存到磁盘,但不希望与服务器或类似的东西进行接口。 也许我只是想使用numpy的结构化数组 Pyth

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

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

我想要一个更像数据库的方法,但我不认为我需要一个数据库。我希望能够将结构保存到磁盘,但不希望与服务器或类似的东西进行接口。
也许我只是想使用numpy的结构化数组

Python附带了一个数据库

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

ZODB将完成您所寻找的任务。您可以在那里完全按照现有的方式对数据进行结构化。不要使用内置dict,您必须切换到持久映射,如果它们往往很大,您可能应该从一开始就使用btree。是进一步阅读简单示例和教程的良好起点。正如您将看到的,ZODB不提供一些类似SQL的访问语言。但是,由于看起来您已经将数据结构化以适合某些词典,因此无论如何,您可能不会错过这一点。与普通shelve相比,ZODB还提供了在将数据写入磁盘之前动态压缩数据的功能。总的来说,它比shelve提供了更多的选择,相比之下,它现在显示出明显的缺点,所以我可以热情地推荐它。我在一年前改用了它,因为典型的关系数据库和ORM的运行速度非常慢,特别是在插入或更新操作中。使用ZODB,我在这里的速度快了一个数量级,因为应用程序和数据库之间没有通信开销,因为数据库已经是应用程序的一部分。

请注意,sqlite3是一个嵌入式SQL数据库,不需要服务器。非常适合OP的用例。您似乎无法在sqlite数据库中存储python对象@alex:您可以使用pickle/json将python对象存储在数据库中pickling my object失败。但是这个解决方案通常可能是最实用的。如果你对答案还不满意,请扩展你的问题或评论答案。否则,请检查已回答的按钮。谢谢