持久化大量对象

时间:2013-09-07 15:02:04

标签: python persistence

我正在处理的一些代码从网站上删除一些数据,然后从该网站中提取某些关键信息并将其存储在一个对象中。我每天创建几百个这些对象,每个对象来自唯一的URL。这很有效,但是,我对Python中可用的持久性以及最适合我需求的选项缺乏经验。

目前我正在使用泡菜。为此,我保留所有这些网页对象,并在创建新网页时将其附加到列表中,然后将该列表保存到pickle(然后在每次更新列表时重新加载它)。但是,由于我的数据量为GB,我发现泡菜有点慢。这不是不可行的,但我想知道是否有更适合的选择。我真的不想拆分对象的结构并将其存储在sql类型的数据库中,因为对于我来说,将方法和数据保存为单个对象非常重要。

Shelve是我一直在研究的一个选项,因为我的印象是,我不需要拔掉所有旧条目(仅需要更新的最近一天),但我不确定是否这就是搁置的工作原理,它的速度有多快。

为了避免漫无目的,我的问题是:存储大量对象(所有相同类型)的首选持久性方法是什么,以便在集合增长时保持读/写速度的提高?

1 个答案:

答案 0 :(得分:0)

Martijn的建议可能是其中一种选择。

您可以考虑将pickle对象直接存储在仍可以从python标准库管理的sqlite数据库中。

使用StringIO对象在数据库列和python对象之间进行转换。

你没有提到你现在正在腌制的每个物体的大小。我想它应该保持在sqlite的限制范围内。