Моя задача — получить JSON-данные из pokeapi и поместить их в таблицу на pg4e-сервере (postgres для всех) с psycopg2.
Это работает, несмотря на то, что я не могу поместить JSON-данные из Python в столбец JSONB таблицы на сервере. Я испробовал несколько возможностей, но мне нужна поддержка.
Как взять JSON, сохраненный в переменной (тексте), и поместить его в таблицу??
Заранее большое спасибо
Мой код:
Imports...
conn...
cur...
sql = '''
CREATE TABLE IF NOT EXISTS pokeapi (id INTEGER, body JSONB);
'''
print(sql)
cur.execute(sql)
url = 'https://pokeapi.co/api/v2/pokemon/1'
print('=== Url is', url)
response = requests.get(url)
text = response.text
print('=== Text is', text)
text = json.loads(text)
sql = f'Insert into pokeapi (id, body) Values (1, 'text'::JSONB);'
cur.execute(sql, (text, url))
conn.commit()
cur.close()
Ответ:
CREATE TABLE IF NOT EXISTS pokeapi (id INTEGER, body JSONB);
=== Url is https://pokeapi.co/api/v2/pokemon/1
=== Text is {"abilities":[{"ability":{"name":"overgrow","url":"https://pokeapi.co/api/v2/ability/65/"}....
line 43
sql = f'Insert into pokeapi (id, body) Values (1, 'text'::JSONB);'
^^^^
SyntaxError: invalid syntax
Подробнее здесь: https://stackoverflow.com/questions/789 ... o-postgres