使用 postgres 在 Django 中高效存储 Json

Posted

技术标签:

【中文标题】使用 postgres 在 Django 中高效存储 Json【英文标题】:Efficient storage of Json in Django with postgres 【发布时间】:2019-11-26 03:08:02 【问题描述】:

我需要在我的 django 应用程序中存储带有模型的 json 文件,我想知道 JSONField 是否是我的最佳选择。我所需要的只是将它存储起来以备后用,除非我最终需要再次检索它,否则不需要搜索或其他查询。如果这很重要,我正在使用 postgresql。

【问题讨论】:

【参考方案1】:

请务必注意 Django JSONField 是 PostgreSQL 特定的模型字段。在内部它使用jsonb field。

documentation of PostgreSQL 表示关于 jsonb 字段:

jsonb 数据以分解的二进制格式存储,这使得它 由于增加了转换开销,输入速度稍慢,但 处理速度明显加快

它还强制您输入有效的 JSON。

如果读/写性能对你来说是唯一重要的事情,我会选择一个普通的文本字段。如果您想强制将 JSON 放入该字段并为将来的需求开放(例如,如果您想针对某个 JSON 键过滤此列),那么您最好使用JSONField

也可以看看this answer。

【讨论】:

谢谢,我会看看文本字段是否更适合我的需要。我认为我的主要要求是使用最少的存储空间,但在我的问题中我并不清楚。我可能应该考虑使用文本字段和一些压缩库,对吧?

以上是关于使用 postgres 在 Django 中高效存储 Json的主要内容,如果未能解决你的问题,请参考以下文章

使用 Django 从 Postgres 导出 JSON 时结果不一致

如何在 JSONField 中使用 Postgres 在 Django 中搜索带有空格的键?

Django 无法在 Docker 设置中连接到 Postgres

我应该在 Django DATABASE ENGINE 中使用哪个 Postgres 值?

在本地为 Django 使用 SQLite,在服务器上使用 Postgres

使用 Postgres 在 Elastic Beanstalk 上设置 Django