7

StackOverflow 上有很多零散的帖子,关于用于保存和加载数据的 Python 模块。

我自己熟悉jsonpickle,我也听说过pytables。那里可能还有更多。此外,每个模块似乎都适合特定目的并且有其自身的限制(例如,如果完全可以使用pickle 加载大型列表或字典需要很长时间)。因此,对可能性有一个适当的概述会很好。

然后,您能否帮助提供用于保存和加载数据的模块的完整列表,并为每个模块进行描述:

  • 该模块的一般用途是什么,
  • 它的极限,
  • 为什么你会选择这个模块而不是其他模块?
4

2 回答 2

7

元帅

  • 优点:

    • 可以以二进制格式读取和写入 Python 值。pickle因此它比(基于字符的)快得多。
  • 缺点:

    • 并非所有 Python 对象类型都受支持。一些不受支持的类型(例如内置函数的子类)将显示为正确编组和解组
    • 并非旨在防止错误或恶意构建的数据。
    • Python 维护者保留在需要时以向后不兼容的方式修改 marshal 格式的权利

搁置

  • 优点:

    • 架子中的值本质上可以是任意 Python 对象
  • 缺点:

    • 不支持对搁置对象的并发读/写访问

ZODB(@Duncan 建议)

  • 临:

    • 透明的持久性
    • 完整的交易支持
    • 可插拔存储
    • 可扩展架构
  • 缺点

    • 不是标准库的一部分。
    • 除非用于持久化的原始 python 对象模型可用,否则无法(轻松)重新加载数据(考虑版本困难和数据可移植性)
于 2012-01-17T11:55:28.040 回答
4

有标准 lib 数据持久性模块的概述

于 2012-01-17T12:14:24.847 回答