将JSON API结果插入SQLite数据库-Flask

时间:2018-08-25 07:48:55

标签: python json sqlite flask

我有这种方法:

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

有什么想法吗?

0 个答案:

没有答案