KeyError:使用API​​将数据插入数据库

时间:2019-03-26 12:04:00

标签: python-3.x sqlite python-requests

我已经设法将数据与其他表一起输入到该数据库中,但是,当我尝试将数据插入Races表中时,这给了我一个错误。

我看了一下我正在使用的API,它将显示在Races表中,而Races表中还有一个单独的表,称为Circuit,这似乎是我的问题所在。我想同时从Races和Circuit表中获取数据,并将其添加到数据库中。

这是我对此特定表的代码:

r = requests.get("https://ergast.com/api/f1/current.json") ## RACE SCHEDULE
r = r.json()
races = r["MRData"]["RaceTable"]["Races"]
#circuit =  r["MRData"]["RaceTable"]["Races"]["Circuit"]
for ra in races:
    rname = ra["raceName"]
    #for ci in circuit:
    tname = ra["circuitName"]
    rdate = ra["date"]
    cur.execute('''INSERT INTO Races(raceName, trackName, raceDate)
    VALUES (?, ?, ?)''', (rname, tname, rdate))
database.commit()
print("done")

我希望先添加数据,然后完成打印,但是错误似乎出在电路部分,它引发以下错误:

  File "E:\grace\SCHOOL\PROJECT\APIPractice.py", line 41, in <module>
    tname = ra["circuitName"]
KeyError: 'circuitName'

我试图更改各种变量名,但是每次它给我一个错误(不一定是这个错误)。有人可以帮助吗?谢谢。

1 个答案:

答案 0 :(得分:0)

circuitName中没有直接命名为r["MRData"]["RaceTable"]["Races"]的密钥。 circuitName在您的json中还有一个名为Circuit的密钥。您需要更改tname

    tname = ra['Circuit']["circuitName"]