1

我想知道当有一个字符串或整数数组(https://docs.kraken.com/rest/#operation/getOHLCData)时,正确的方法是在来自 Kraken API 的 Django SQLite 中保存一个数字.

我的意见.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()

我的模型.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 编号: 在此处输入图像描述

我在这里彻底研究并尝试了许多类似的案例,但没有一个例子是带有此错误消息的 API 响应示例。

4

1 回答 1

1

我认为问题在于数组“结果”数组中的最后一项 - “最后一个”。好像只是一个数字。我猜你需要在算法中进行一些类型检查。 在此处输入图像描述

代码修改建议:

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()
于 2022-02-28T22:44:04.867 回答