Как я могу вставить / обновить JSON в моей базе данных postgresql - PullRequest
0 голосов
/ 29 мая 2019

теперь моя структура таблицы выглядит следующим образом

имя таблицы 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, как вы видите тип текста.Это похоже на dict, но как назначить текстовую переменную json ?.или я что-то упускаю?

Ответы [ 2 ]

1 голос
/ 29 мая 2019

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)
0 голосов
/ 29 мая 2019

Ну, вы используете 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"}]
...