pythonsqlite导出json_如何使用Django/Python在SQLite中存储获取的JSON数据

本文介绍了一个使用Django和Python处理从第三方API获取的JSON数据并存储到SQLite数据库的问题。作者遇到了模型定义和保存数据时的错误,以及如何自动更新和覆盖旧数据的疑问。
摘要由CSDN通过智能技术生成

这是我第一次尝试使用Django模型,我一直在做一些小的尝试,但是暂时被卡住了。在

我想使用Python/Django将从第三方API获取的数据存储到SQLite数据库中(我在Django之上构建webapp)。在

理论上,我的想法是:使用request库获取数据。在

操作它使它符合Python

通过分配给变量来提取数据

使用Django将数据推送到SQLite数据库model

获取SQLite数据以呈现前端

到目前为止,我得到的是:

报价应用程序/模型.py:from django.db import models

# create class to store API fetched data

class ratesEUR(models.Model):

timestamp = models.CharField(max_length=10)

base = models.CharField(max_length=3)

date = models.DateField(auto_now=False, auto_now_add=False)

rates = models.CharField(max_length=8)

def __str__(self):

return self.base

当我运行models.py时,我得到以下错误:

^{pr2}$

报价应用程序/视图.py:from django.shortcuts import render

from Quotes_app.models import ratesEUR

import json

import requests

response = requests.get("http://data.fixer.io/api/latest?access_key=XXX&base=EUR")

rates_EUR = json.loads(response.content.decode('utf-8'))

timestamp = rates_EUR['timestamp']

base = rates_EUR['base']

date = rates_EUR['date']

rates = rates_EUR['rates']

rates_new = ratesEUR(timestamp=timestamp, base=base, date=date, rates=rates)

rates_new.save()

def render_Quotes_app(request, template="Quotes_app/templates/Quotes_app/Quotes_app.html"):

return render(request, template)

当我运行views.py时,我得到了以下错误,数据库没有被填充:from Quotes_app.models import ratesEUR

ModuleNotFoundError: No module named 'Quotes_app'

[Finished in 0.421s]

json响应如下:{

"success": true,

"timestamp": 1573382946,

"base": "EUR",

"date": "2019-11-10",

"rates": {

"AED": 4.047045,

"AFN": 86.223727,

"ALL": 123.086065,

"AMD": 525.791674,

[...]

}

设置.py:INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'Quotes_app',

'Wiki_app',

]

除了上述错误之外,我还有以下问题:我是否正确地定义了表/模型,以便能够相应地表示JSON数据,还是需要某种嵌套结构,甚至需要一个链接到另一个的额外表?

是否可以选择每120秒自动发出一次请求?

我怎样才能用数据库中新获取的数据覆盖最后一个数据对象?(我不再需要过时的数据)

在模块.py文件还是其他文件?

事先非常感谢您的建议!在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值