所以我是python的新手,并且正在尝试使用Sqlite将一些数据放入数据库中。
数据是带有字典列表的JSON。每个dictinary的最后一个条目是另一个带字典的列表(参见下面的数据,文件中的第一个条目)。除了最后一部分(即字典列表)之外,从列表中的每个字典中提取数据都很好。我无法正确地完成它。我把它放在我的代码中的一个函数中,以便能够调用不同的url(错误消息仍然是指' WriteToFactionSpread',函数的名称)
数据:https://eddb.io/archive/v5/systems_populated.json
我的代码:
uh = urllib.urlopen(url)
input = json.loads(uh.read())
cur.execute('''CREATE TABLE IF NOT EXISTS FactionSpread(minor_faction_id
INTEGER PRIMARY KEY, state_id INTEGER, influence INTEGER, state TEXT)''')
conn.commit()
for i in input:
cur.execute('''INSERT INTO FactionSpread (minor_faction_id, state_id, influence, state )VALUES (?, ?, ?, ?)''', (i['minor_faction_presences'][0]['minor_faction_id'], i['minor_faction_presences'][1]['state_id']
, i['minor_faction_presences'][2]['influence'], i['minor_faction_presences'][3]['state']))
conn.commit()
uh.close()
错误:
Traceback (most recent call last):
File "E:\Python\EliteDangerous\trial.py", line 34, in <module>
WriteToFactionSpread(ab)
File "E:\Python\EliteDangerous\trial.py", line 27, in WriteToFactionSpread
(i['minor_faction_presences'][0]['minor_faction_id']))
ValueError: parameters are of unsupported type
(我希望格式化不会在这里复制/粘贴它,但我觉得它没问题。)
我没有在实际数据中复制粘贴,因为它会把它挤掉一点但链接会转到一个JSON文件,其中包含游戏Elite Dangerous的数据。
尝试了一些不同的方法,但此刻我不知所措,我仍然是绿色的。