我正在嘗試使用 Python 和 API 構建一個 SQL 表,其中包含 Poke API 中前 100 個 Pokemon 的名稱。這是我的代碼
import psycopg2, json, requests, hidden
# Load secrets
secrets = hidden.secrets()
conn = psycopg2.connect(host=secrets['host'],
port=secrets['port'],
database=secrets['database'],
...,
connect_timeout=3)
cur = conn.cursor()
defaulturl = 'https://pokeapi.co/api/v2/pokemon?limit=100&offset=0'
sql = '''
CREATE TABLE IF NOT EXISTS pokeapi
(id SERIAL, body JSONB);
'''
cur.execute(sql)
response = requests.get(defaulturl)
js = response.json()
results = js['results']
for x in range(len(results)):
body = requests.get(results[x]['url'])
js_body = json.dumps(body)
sql = f"INSERT INTO pokeapi (body) VALUES ('{js_body}'::JSONB)";
cur.execute(sql, (defaulturl))
print('Closing database connection...')
conn.commit()
cur.close()
這條線出現了錯誤
---> 35 js_body = json.dumps(body)
我不確定是什么導致了錯誤。
uj5u.com熱心網友回復:
requests.get()回傳整個回應,而不僅僅是正文。
如果您想要正文,請使用text回應物件的屬性:
response = requests.get(results[x]['url'])
js_body = json.dumps(response.text)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/525952.html
上一篇:JSON到CSV:標題問題的關鍵
