我希望我在这里没有遗漏一些非常明显的东西,
我想从 postgres 函数中获取 JSON 输出(我想许多其他人已经需要这个)并且我很乐意在我的服务器上安装 contrib 函数的扩展,
有没有办法从 sql 或 plpgsql 函数(或在 db-server-side python 的帮助下)获取 JSON 输出?具体来说,我想以record[]
JSON 格式获得我的结果。
我希望我在这里没有遗漏一些非常明显的东西,
我想从 postgres 函数中获取 JSON 输出(我想许多其他人已经需要这个)并且我很乐意在我的服务器上安装 contrib 函数的扩展,
有没有办法从 sql 或 plpgsql 函数(或在 db-server-side python 的帮助下)获取 JSON 输出?具体来说,我想以record[]
JSON 格式获得我的结果。
从PostgreSQL 9.2开始就内置了对 JSON 的支持,并且在最近的版本中增加了许多其他功能(例如:PostgreSQL 0.4 中的 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
使用9.2 中的record_to_json(...) ,现在可以反向移植到 9.1。
在服务器上安装:
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 plpython插件当然可以让你使用python json库来做到这一点。
你可以这样做:
CREATE OR REPLACE FUNCTION myschema.tojsonfunc()
AS $$
import json;
jsonStr = json.dumps(myrecord)
$$ LANGUAGE plpythonu;