如何使用python 3将特定的json插入sqlite数据库

使用
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'])
点赞