【问题标题】:How to store NumPy arrays in PostgreSQL database?如何在 PostgreSQL 数据库中存储 NumPy 数组?
【发布时间】:2020-08-29 18:16:06
【问题描述】:

目前,我正在创建 .npz 压缩文件来存储大型 NumPy 数组。因此,每次我需要从文件中加载数组并且由于这是一个频繁的过程,我都在考虑将 NumPy 数组存储在数据库中。我正在使用 PostgreSQL 数据库。

【问题讨论】:

  • postgresql.org/docs/9.1/arrays.html - 你可以看看这是否有你需要的东西。
  • 尝试存储到 Postgres 数组类型需要在任一方向进行相当大的转换。我会说存储为 *.npy 到 bytea 字段将是一个更好的解决方案。我从来没有这样做过,所以这是目前的理论。仅供参考,*.npz 文件未压缩npz“.npz 文件格式是文件的压缩存档,以它们包含的变量命名。存档未压缩...”

标签: python database postgresql numpy fastapi


【解决方案1】:

您可以使用 bytea 列来执行此操作(它可以存储任意二进制文件)。您可以使用 pickle.dumps 将您的 numpy 数组转换为二进制字符串,然后根据需要插入到 postgres 中。然后,您可以选择该数据并使用 pickle.loads 来取回您的数组。这是一个类似问题的答案:https://stackoverflow.com/a/57644761/7386185

根据阵列的大小,您可能需要考虑某种 blob 存储,例如 amazon S3。

如果您经常访问此数据并且这是一个生产环境,您可能需要考虑将此数据保留在内存中。如果您的数组足够大以至于您无法将其在内存中保存太久,那么您应该考虑您的应用程序是否允许批量或缓冲区流式传输数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多