KeyError: Вставка данных в базу данных с помощью API - PullRequest
0 голосов
/ 26 марта 2019

Мне уже удалось ввести данные в эту базу данных ранее с другими таблицами, однако, когда я пытаюсь вставить данные в таблицу Races, это выдает мне ошибку.

Я посмотрел на используемый мной API, и в таблице Races появится отдельная таблица Circuit в таблице Races, и, похоже, в этом моя проблема. Я хочу получить данные из таблиц 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 голосов
/ 26 марта 2019

Нет ключа с именем circuitName в r["MRData"]["RaceTable"]["Races"] напрямую.У circuitName есть еще один ключ с именем Circuit в вашем json.Вам необходимо изменить tname

    tname = ra['Circuit']["circuitName"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...