0

我正在编写一些代码,它从网站上抓取一些数据,然后从该网站中提取某些关键信息并将其存储在一个对象中。我每天创建几百个这样的对象,每个都来自唯一的 url。这工作得很好,但是,我对 Python 中哪些选项可用于持久性以及最适合我的需要的选项缺乏经验。

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

搁置是我一直在研究的一个选项,因为我的印象是我不必解开和腌制所有旧条目(只是需要更新的最近一天),但我不确定这是否是搁置工作,以及它有多快。

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

4

1 回答 1

0

Martijn 的建议可能是备选方案之一。

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

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

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

于 2013-09-07T15:10:28.500 回答