使用
python 3,我想下载作为
JSON返回的API数据,然后我想只将特定的(列或字段或其他?)插入到sqlite数据库中.所以,这就是我所拥有的以及我所遇到的问题:
使用python的请求模块:
##### import modules
import sqlite3
import requests
import json
headers = {
'Authorization' : 'ujbOsdlknfsodiflksdonosB4aA=',
'Accept' : 'application/json'
}
r = requests.get(
'https://api.lendingclub.com/api/investor/v1/accounts/94837758/detailednotes',
headers=headers
)
好的,第一个问题是如何将所请求的JSON数据转换为python可以使用的东西(字典?).就是它…
jason.loads(r.text)
然后我创建了我想要插入特定数据的表:
curs.execute('''CREATE TABLE data(
loanId INTEGER NOT NULL,
noteAmount REAL NOT NULL,
)''')
没问题……但是现在,即使JSON数据看起来像这样(尽管有数百条记录)……
{
"myNotes": [
{
"loanId":11111,
"noteId":22222,
"orderId":33333,
"purpose":"Debt consolidation",
"canBeTraded":true,
"creditTrend":"DOWN",
"loanAmount":10800,
"noteAmount":25,
"paymentsReceived":5.88,
"accruedInterest":12.1,
"principalPending":20.94,
},
{
"loanId":11111,
"noteId":22222,
"orderId":33333,
"purpose":"Credit card refinancing",
"canBeTraded":true,
"creditTrend":"UP",
"loanAmount":3000,
"noteAmount":25,
"paymentsReceived":7.65,
"accruedInterest":11.92,
"principalPending":19.76,
}]
}
我只想在sqlite数据库中插入2个数据点,“loanId”和“noteAmount”.我相信将数据插入数据库将看起来像这样(但知道这是不正确的):
curs.execute('INSERT INTO data (loanId, noteAmount) VALUES (?,?)', (loanID, noteAmount))
但我现在完全不知道如何做到这一点,所以我想我有两个主要问题;将下载的数据转换为python可用于将特定数据插入数据库的内容;然后我如何从保存下载数据的对象将数据插入数据库.我猜测循环是答案的一部分……但是从什么方面来看?提前致谢!
最佳答案 正如
the documentation所说:
The sqlite3 module supports two kinds of placeholders: question marks
(qmark style) and named placeholders (named style).
请注意,您甚至可以使用executemany一次插入所有行.
所以在你的情况下:
curs.executemany('INSERT INTO data (loanId, noteAmount) '
'VALUES (:loanId,:noteAmount)', json.loads(...)['myNotes'])