为什么不应该使用sqlite3创建磁盘支持的Python对象映射?

时间:2019-04-10 18:20:16

标签: python sqlite persistence

编辑:这篇文章被标记为“重复”,我认为这是我的初衷。因此,我已经澄清了我的问题,希望它能重新打开。

我最近遇到了一种情况,我需要随机访问一组Python对象。该集合内存不足,因此我咨询了Python documentation on object persistence

文档中提到了用于非串行持久性的两个选项:shelvesqlite3

  • shelve是特定于Python的库,可与某种内置的Unix一起使用。 (我不熟悉具体情况。)
  • sqlite3是一个得到广泛支持的高度可靠的小型数据库,在各处使用。

所以我的第一个反应是使用sqlite3,因为它具有高度的灵活性并具有丰富的生态系统。但是根据another SO discussion,将腌制的Python对象存储在sqlite3中被认为是非常糟糕的形式。

在上面标记的问题中,请注意将数据腌制到sqlite3中会阻止对该数据进行查询。但是,没有什么可以阻止我添加两列,三列或许多列,通过这些列我可以检索数据的横截面。 shelve无法启用此功能。

对我来说,这提供了shelve根本无法提供的全部用例。但是,在上面提到的帖子中,声称“做这种事情表明设计不好”,以及许多其他判断性声明。

我的问题是:为什么?为什么这样做表示不健康?我可以想到许多用例,它们可能需要sqlite3的灵活性和容量而又没有成熟的数据库系统的开销。

0 个答案:

没有答案