如何从 Kraken API 解决 Django 中的“'int' 对象不可订阅”
How to solve "'int' object is not subscriptable" in Django from a Kraken API
我想知道当存在字符串或整数数组 (https://docs.kraken.com/rest/#operation/getOHLCData) 时,在 Django SQLite 中保存来自 Kraken API 的数字的正确方法是什么。
我的views.py
from rest_framework import generics
from .serializers import KrakenSerializer
from krakenohlc.models import Krak
import requests
class KrakenList(generics.RetrieveAPIView):
serializer_class = KrakenSerializer
queryset = Krak.objects.all()
def get_object(request):
url = 'https://api.kraken.com/0/public/OHLC?pair=XBTEUR'
response = requests.get(url)
data = response.json()
for i in data['result'].values():
kraken_data = Krak(
time_0=(i[0][0]),
)
kraken_data.save()
我的models.py
from django.db import models
class Krak(models.Model):
time_0 = models.IntegerField(blank=True, null=True)
def __str__(self):
return self.time_0
这是我在浏览器中遇到的错误:
SQLite 响应实际上是在数据库中保存 API 号码:
我在这里彻底研究并尝试了许多类似的案例,但是 none 有一个 API 响应的示例,其中包含此错误消息。
我认为问题出在数组的“结果”数组中的最后一项 - “last”。好像只是一个数字。我猜你需要在算法中进行一些类型检查。
代码修改建议:
for i in data['result'].values():
# Skips "last" attribute
if isinstance(i, int):
continue
kraken_data = Krak(
time_0=(i[0][0]),
)
kraken_data.save()
我想知道当存在字符串或整数数组 (https://docs.kraken.com/rest/#operation/getOHLCData) 时,在 Django SQLite 中保存来自 Kraken API 的数字的正确方法是什么。
我的views.py
from rest_framework import generics
from .serializers import KrakenSerializer
from krakenohlc.models import Krak
import requests
class KrakenList(generics.RetrieveAPIView):
serializer_class = KrakenSerializer
queryset = Krak.objects.all()
def get_object(request):
url = 'https://api.kraken.com/0/public/OHLC?pair=XBTEUR'
response = requests.get(url)
data = response.json()
for i in data['result'].values():
kraken_data = Krak(
time_0=(i[0][0]),
)
kraken_data.save()
我的models.py
from django.db import models
class Krak(models.Model):
time_0 = models.IntegerField(blank=True, null=True)
def __str__(self):
return self.time_0
这是我在浏览器中遇到的错误:
SQLite 响应实际上是在数据库中保存 API 号码:
我在这里彻底研究并尝试了许多类似的案例,但是 none 有一个 API 响应的示例,其中包含此错误消息。
我认为问题出在数组的“结果”数组中的最后一项 - “last”。好像只是一个数字。我猜你需要在算法中进行一些类型检查。
代码修改建议:
for i in data['result'].values():
# Skips "last" attribute
if isinstance(i, int):
continue
kraken_data = Krak(
time_0=(i[0][0]),
)
kraken_data.save()