Вставить данные в базу данных sqlite3 с помощью API - PullRequest
2 голосов
/ 20 марта 2019

Я пытаюсь вставить данные из веб-API в мою базу данных (я использую sqlite3 на Python 3.7.2), и я не могу найти учебники о том, как это сделать. Пока весь мой код:

import requests, sqlite3
database = sqlite3.connect("ProjectDatabase.db")
cur = database.cursor()

d = requests.get("http://ergast.com/api/f1/2019/drivers")

Я собираюсь получить имена и номера драйверов каждого драйвера и вставить их все в таблицу с названием Drivers. (Я также использую больше API с большим количеством таблиц, но если я пойму, как это сделать, то с остальными все будет в порядке.) Полагаю, мне нужно сделать что-то вроде

cur.execute('''INSERT INTO Drivers VALUES(?,?), (driverName, driverNumber)
''')

но я изо всех сил пытаюсь понять, как вставить данные прямо в таблицу с веб-сайта. Кто-нибудь знает как это сделать? Спасибо

1 Ответ

2 голосов
/ 20 марта 2019

Как указано в разделе комментариев в OP, проблема заключалась в том, как разобрать точку API.

d = requests.get("http://ergast.com/api/f1/2019/drivers.json")
d = d.json()
drivers = d["MRData"]["DriverTable"]["Drivers"]

будет ответом на этот вопрос для доступа ко всем драйверам, предоставляемым этим API.

Чтобы добавить записи в БД, вы можете использовать следующее:

for dr in drivers:
    name = dr["familyName"]
    number = dr["permanentNumber"]
    sql = 'INSERT INTO Drivers (name,number) VALUES(?,?)'
    val = (name,number)
    cur.execute(sql,val)

с этим решением вам не нужно указывать индекс и вы можете напрямую получить доступ к интересующему вас параметру.

...