我如何将JSON插入/更新到数据库Postgresql

时间:2019-05-29 04:48:00

标签: python json postgresql psycopg2

现在我的表结构是这样

表名json
单词varchar
文字json

使用psycopg2和python,我已经像这样编码sql语句

cur.execute("INSERT INTO json (word,text) VALUES (%s,%s);",(word,text))

字 具有列表类型,但内部为字符串,例如

['a','b','c']

文字 具有列表类型,但内部为json,例如

[{'a':'b'},{'c':'d'}] 

现在我正在尝试插入此内容。 但是错误警告 ”无法适应类型“ dict”“

我的问题是,正如您看到的文本类型,如何将json插入postgres。看起来像字典,但是如何分配文本变量为json?还是我想念什么?

2 个答案:

答案 0 :(得分:1)

json.dumps()可用于切换到数据库的字符串。

import json
postgres_string = json.dumps(text)
# Save postres_string into postgress here

# When you want to retrieve the dictionary, do so as below:
text = json.loads(postgres_string)

答案 1 :(得分:0)

好吧,您使用execute函数执行一个SQL,只需构造正确的SQL,它就会成功。您想要插入json类型的数据,只需使用“ ::”将字符串类型转换为json类型,如下所示:

postgres=# insert into json_test(word,text) values('abcd_word','[{"a":"b"},{"c":"d"}]'::json);
INSERT 0 1
postgres=# 
postgres=# select * from json_test ;
 tablename |   word    |         text          
-----------+-----------+-----------------------
           | abcd_word | [{"a":"b"},{"c":"d"}]