现在我的表结构是这样
表名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?还是我想念什么?
答案 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"}]