Jef*_*f F 5 python sqlite json python-3.x
使用 python 3,我想下载 API 数据,该数据以 JSON 形式返回,然后我想仅将特定的(列或字段或其他?)插入到 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
)
Run Code Online (Sandbox Code Playgroud)
好的,第一个问题是如何将请求的 JSON 数据放入 python 可以使用的东西(字典?)中。就是它...
jason.loads(r.text)
Run Code Online (Sandbox Code Playgroud)
然后我创建要插入特定数据的表:
curs.execute('''CREATE TABLE data(
loanId INTEGER NOT NULL,
noteAmount REAL NOT NULL,
)''')
Run Code Online (Sandbox Code Playgroud)
没问题...但是现在,即使 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,
}]
}
Run Code Online (Sandbox Code Playgroud)
我只想将 2 个数据点插入 sqlite 数据库,即“loanId”和“noteAmount”。我相信将数据插入数据库会看起来像这样(但知道这是不正确的):
curs.execute('INSERT INTO data (loanId, noteAmount) VALUES (?,?)', (loanID, noteAmount))
Run Code Online (Sandbox Code Playgroud)
但我现在完全不知道如何做到这一点,所以我想我有两个主要问题;将下载的数据转换为Python可以使用的东西,然后将特定数据插入数据库;然后我到底如何将数据从保存下载数据的对象插入数据库。我猜循环是答案的一部分......但是从什么开始呢?提前致谢!
正如文档所说:
sqlite3模块支持两种占位符:问号(qmark样式)和命名占位符(named样式)。
请注意,您甚至可以使用 一次插入所有行executemany。所以在你的情况下:
curs.executemany('INSERT INTO data (loanId, noteAmount) '
'VALUES (:loanId,:noteAmount)', json.loads(...)['myNotes'])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20023 次 |
| 最近记录: |