Вставить результат JSON API в базу данных SQLite - Flask - PullRequest
0 голосов
/ 25 августа 2018

У меня есть этот метод:

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.- Существует ли четкий способ создания таблицы со строками и столбцами на лету для SQLite для этой цели?

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

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...