有哪些可用的 Python 模块可用于保存和加载数据?

发布于 2024-12-27 08:08:48 字数 469 浏览 1 评论 0原文

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

我本人熟悉 jsonpickle 我也听说过 pytables 。可能还有更多。此外,每个模块似乎都适合特定的用途,并且有其自身的限制(例如,如果能够正常工作,则使用 pickle 加载大型列表或字典需要很长时间)。因此,最好对可能性有一个适当的概述。

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

  • 该模块的一般用途是什么、
  • 它的限制、
  • 为什么您会选择这个模块而不是其他模块?

There are many scattered posts out on StackOverflow, regarding Python modules used to save and load data.

I myself am familiar with json and pickle and I have heard of pytables too. There are probably more out there. Also, each module seems to fit a certain purpose and has its own limits (e.g. loading a large list or dictionary with pickle takes ages if working at all). Hence it would be nice to have a proper overview of possibilities.

Could you then help providing a comprehensive list of modules used to save and load data, describing for each module:

  • what the general purpose of the module is,
  • its limits,
  • why you would choose this module over others?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

阳光①夏 2025-01-03 08:08:48

元帅

  • 优点:

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

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

shelve

  • 优点:

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

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

ZODB (由@Duncan建议)

  • 专业:

    • 透明持久
    • 全面的交易支持
    • 可插拔存储
    • 可扩展架构
    • 优点

  • 缺点

    • 不是标准库的一部分。
    • 无法(轻松)重新加载数据,除非用于持久化的原始Python对象模型可用(考虑版本困难和数据可移植性)

marshal:

  • Pros:

    • Can read and write Python values in a binary format. Therefore it's much faster than pickle (which is character based).
  • Cons:

    • Not all Python object types are supported. Some unsupported types such as subclasses of builtins will appear to marshal and unmarshal correctly
    • Is not intended to be secure against erroneous or maliciously constructed data.
    • The Python maintainers reserve the right to modify the marshal format in backward incompatible ways should the need arise

shelve

  • Pros:

    • Values in a shelf can be essentially arbitrary Python objects
  • Cons:

    • Does not support concurrent read/write access to shelved objects

ZODB (suggested by @Duncan)

  • Pro:

    • transparent persistence
    • full transaction support
    • pluggable storage
    • scalable architecture
  • Cons

    • not part of standard library.
    • unable (easily) to reload data unless the original python object model used for persisting is available (consider version difficulties and data portability)
佞臣 2025-01-03 08:08:48

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

There is an overview of the standard lib data persistence modules.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文