我希望我没有漏掉什么非常明显的东西,
我想从一个 postgres 函数中获取 JSON 输出 (我想象许多其他人已经需要这个功能),并且我很乐意在我的服务器上安装 contrib 函数扩展,
是否有任何方法可以从 sql 或 plpgsql 函数获得 JSON 输出 (或借助于 db 服务器端的 Python)? 具体来说,我想将 record[]
的结果作为 JSON 获取。
我希望我没有漏掉什么非常明显的东西,
我想从一个 postgres 函数中获取 JSON 输出 (我想象许多其他人已经需要这个功能),并且我很乐意在我的服务器上安装 contrib 函数扩展,
是否有任何方法可以从 sql 或 plpgsql 函数获得 JSON 输出 (或借助于 db 服务器端的 Python)? 具体来说,我想将 record[]
的结果作为 JSON 获取。
row_to_json
可将记录转换为 JSON 对象,而 array_to_json
则可以将数组转换为 JSON 数组。SELECT
查询的结果转换为 JSON。SELECT array_to_json(array_agg(row_to_json(t))) FROM
(SELECT col1, col2, col3 FROM example_table) t
sudo apt-get install postgresql-plpython-9.4
然后在您的Postgres服务器上:CREATE EXTENSION IF NOT EXISTS plpythonu;
CREATE LANGUAGE plpythonu;
CREATE OR REPLACE FUNCTION prettyprint_json(data text)
RETURNS json
AS $$
import json
return json.dumps(json.loads(data), indent=4)
$$ LANGUAGE plpythonu;
使用 PostgreSQL PL/Python 插件可以使用 Python 的 JSON 库来实现这一点。
您可以像这样操作:
CREATE OR REPLACE FUNCTION myschema.tojsonfunc()
AS $$
import json;
jsonStr = json.dumps(myrecord)
$$ LANGUAGE plpythonu;
query_to_json()
、array_to_json()
和record_to_json()
,它们根据名称接受输入并将其转换为JSON。 - madth3row_to_json
函数,这可能解决我的问题,谢谢。 - Ali