使用API​​将数据插入sqlite3数据库

时间:2019-03-20 10:29:30

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

我正在尝试将来自Web API的数据插入到我的数据库中(我在python 3.7.2上使用sqlite3),但找不到任何有关此操作的教程。到目前为止,我所有的代码是:

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 个答案:

答案 0 :(得分:2)

正如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)

使用此解决方案,您无需使用指定索引即可直接访问您感兴趣的参数。