我有这种方法:
def getHistoricRates():
""" Here we have the function that will retrieve the historical rates from fixer.io, since 1999 """
rates = []
response = urlopen('my_api_key')
data = response.read()
rdata = json.loads(data.decode(), parse_float=float)
rates_from_rdata = rdata.get('rates', {})
for rate_symbol in ['USD', 'GBP', 'HKD', 'AUD', 'JPY', 'SEK', 'NOK']:
try:
rates.append(rates_from_rdata[rate_symbol])
with open('usio.json', 'w') as outfile:
json.dump(rdata, outfile)
history_currency = json.load(open('usio.json'))
db = sqlite3.connect("usio.sql")
c = db.cursor()
#curs.execute('''CREATE TABLE rates(
# currency TEXT NOT NULL,
# rate REAL NOT NULL,
# )''')
except KeyError:
logging.warning('rate for {} not found in rdata'.format(rate_symbol))
pass
return rates
这会将结果存储到json
文件with open('usio.json', 'w') as outfile
中,我需要将此json
结果存储到SQLite数据库中,我确实有一个SQL文件db = sqlite3.connect("usio.sql")
,但是然后,我很困惑,看到了很多教程,但是我仍然没有明白我需要什么。
1.-为此目的,有没有一种清晰的方法可以动态创建带有行和列的表?
2.-在确实连接了sql文件之后,如何继续我的逻辑,以便可以将json.dump
结果存储在那里?
这或多或少是我的表结构,非常简单:
curs.execute('''CREATE TABLE rates(
currency TEXT NOT NULL,
rate REAL NOT NULL,
)''')
当前在我的代码中被评论了。
json响应如下:
success true
timestamp 1535180947
base "EUR"
date "2018-08-25"
rates
AED 4.272855
AFN 84.510584
ALL 125.782694
AMD 559.27321
... more currencies with their rates
有什么想法吗?