错误psycopg2.programmingerror:can can Adapt Type' dict;来自Pokejson

发布于 2025-01-24 18:30:51 字数 1177 浏览 3 评论 0原文

无法插入SQL表中的前100个口袋妖怪来自Pokeapi

import psycopg2
import json
import myutils
import requests
conn=psycopg2.connect(                                                                                                                          
    host='host',database='database',
    user='user',password='password',
    connect_timeout=3)
cur=conn.cursor()
sql='DROP TABLE IF EXISTS pokeapi;'
cur.execute(sql)
conn.commit()
print(sql)
sql = 'CREATE TABLE IF NOT EXISTS pokeapi (id SERIAL,body JSONB);'
cur.execute(sql)
conn.commit()
print(sql)   
for i in range(1,101):
    url='https://pokeapi.co/api/v2/pokemon/%s' % (str(i))                                                                                       
    response = requests.get(url)
    text = response.text
    js = json.loads(text)
    stuff = js.get('forms', None)
    sql='INSERT INTO pokeapi VALUES (%s)'
    cur.execute(sql,(stuff,))
    conn.commit()
    print(sql)

错误

psycopg2.ProgrammingError: can't adapt type 'dict' 

这是我注意到JSON结构的

"species":{"name":"bulbasaur","url":"https://pokeapi.co/api/v2/pokemon-species/1/"}

Can't insert into SQL table the first 100 Pokemon from PokeApi

import psycopg2
import json
import myutils
import requests
conn=psycopg2.connect(                                                                                                                          
    host='host',database='database',
    user='user',password='password',
    connect_timeout=3)
cur=conn.cursor()
sql='DROP TABLE IF EXISTS pokeapi;'
cur.execute(sql)
conn.commit()
print(sql)
sql = 'CREATE TABLE IF NOT EXISTS pokeapi (id SERIAL,body JSONB);'
cur.execute(sql)
conn.commit()
print(sql)   
for i in range(1,101):
    url='https://pokeapi.co/api/v2/pokemon/%s' % (str(i))                                                                                       
    response = requests.get(url)
    text = response.text
    js = json.loads(text)
    stuff = js.get('forms', None)
    sql='INSERT INTO pokeapi VALUES (%s)'
    cur.execute(sql,(stuff,))
    conn.commit()
    print(sql)

This is the error I'm getting

psycopg2.ProgrammingError: can't adapt type 'dict' 

Notice the JSON structure

"species":{"name":"bulbasaur","url":"https://pokeapi.co/api/v2/pokemon-species/1/"}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

允世 2025-01-31 18:30:52

您必须适应python dict dict to json 在传递时,范围。

from psycopg2.extras import Json

#...
cur.execute(sql,(Json(stuff),))

You must adapt the python dict to Json when passing it as a query parameter.

from psycopg2.extras import Json

#...
cur.execute(sql,(Json(stuff),))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文