我正在写一个插入函数,我有一个嵌套的字典要插入到postgres的列中,有没有办法将整个json插入到列中?可以说我必须将键“ val”的值插入列中,如何实现呢?我在python代码中使用了psycopg2库。
"val": {
"name": {
"mike": "2.3",
"roy": "4.2"
}
}
答案 0 :(得分:0)
是的,您可以至少使用Postgres 9.4及更高版本来提取嵌套的JSON,方法是将字符串转换为JSON并使用“按键获取JSON对象字段”运算符:
YOUR_STRING ::CAST JSON_OPERATOR
'{"val":1}' ::JSON -> 'val'
这至少在Postgres 9.4及更高版本中有效:
INSERT INTO my_table (my_json)
VALUES ('"val":{"name":{"mike":"2.3"}}'::JSON->'val');
根据您的列类型,您可以选择转换为JSONB而不是JSON(以上内容仅适用于TEXT和JSON)。
INSERT INTO my_table (my_json)
VALUES ('"val":{"name":{"mike":"2.3"}}'::JSONB->'val');
请参阅:https://www.postgresql.org/docs/9.5/static/functions-json.html