首页 > 解决方案 > 返回 postgres 查询时 Psycopg2 无效的 json

问题描述

我正在使用 Django 访问我的 postgres 数据库中的存储函数。当我在 Postgres 中执行函数时,它返回双引号和有效的 json。但是,当我从 Django(使用 psycopg2)调用该函数时,双引号被删除,单引号替换它们。

似乎 psycopg2 正在后台对列表/字典进行某种类型的转换。但是,我需要保留 json。任何想法如何解决这个问题?

标签: pythondjangopsycopg2

解决方案


您可以通过注册无操作函数来覆盖 psycopg2 自动转换 JSON 对象/数组的功能register_default_json()

psycopg2.extras.register_default_json(loads=lambda x: x)

从文档中引用

Psycopg 自动将 PostgreSQL json 数据转换为 Python 对象。我怎样才能收到字符串呢?避免 JSON 解析的最简单方法是使用 register_default_json() 注册一个无操作函数:

psycopg2.extras.register_default_json(loads=lambda x: x) 有关详细信息,请参阅 JSON 改编。

附加阅读


推荐阅读