将嵌套的json插入Postgres中的列

时间:2018-10-10 19:33:45

标签: python json python-3.x postgresql

我正在写一个插入函数,我有一个嵌套的字典要插入到postgres的列中,有没有办法将整个json插入到列中?可以说我必须将键“ val”的值插入列中,如何实现呢?我在python代码中使用了psycopg2库。

"val": {
  "name": {
    "mike": "2.3",
    "roy": "4.2"
     }
 }

1 个答案:

答案 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