【问题标题】:KeyError: Inserting data into database with APIKeyError:使用 API 将数据插入数据库
【发布时间】:2019-03-26 20:10:57
【问题描述】:

我之前已经设法使用其他表将数据输入到此数据库中,但是,当我尝试将数据插入到 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'

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-08-11
      • 2018-11-19
      • 2023-02-02
      • 1970-01-01
      • 2020-11-23
      • 2014-01-13
      • 2013-04-04
      • 2016-09-18
      • 2014-08-28
      相关资源
      最近更新 更多