3Create
@3Create

Не обновляются данные из API, что мешает?

Всем ку! Приходят данные через api. Но почему то не обновляются, ни в бд, ни в принте.
После первого запроса, происходит дублирование его же и все. Если перезапустить. Новые данные поступают и тут же циклично повторяются... Как быть?(((
606cbfe240361388210328.jpeg

import sqlite3
import datetime as dt
import sys
from binance_api import Binance
#################################################################################
pair = 'BNBUSDT'
offers_amount=10


ROUND_VAL=1
MAIN_DB='./MAX1.db'
OLD_DATA=90
#################################################################################
bot = Binance(
    API_KEY='****************************************************',
    API_SECRET='************************************************'
)

data=bot.depth_futures(symbol=pair,limit=offers_amount)

def data_to_dict(raw):
    res={}
    for x1,x2 in raw:
        if x1 in res:
            res[x1]+=x2
        else:
            res[x1]=x2
    return res

def get_max(d):
    max_x1=list(d.keys())[0]
    max_x2=d[max_x1]
    for k in d:
        if d[k]>max_x2:
            max_x2=d[k]
            max_x1=k
    return [max_x1,max_x2]

def trunc(x,n):
    i,f=x.split('.')
    p=f[:n]
    return '%s.%s'%(i,p)

class DBController:
    def __init__(self):
        self.conn=sqlite3.connect(MAIN_DB,detect_types=sqlite3.PARSE_DECLTYPES)

    def insert_data(self,bidsMAX,asksMAX):
        cur=self.conn.cursor()
        cur.execute('insert into maxvalues (v_created,bidsMAX_1,bidsMAX_2,asksMAX_1,asksMAX_2) values (?,?,?,?,?)',
                    (dt.datetime.now(), *bidsMAX,*asksMAX))
        self.conn.commit()

    def delete_old(self):
        old_dt=dt.datetime.now()-dt.timedelta(days=OLD_DATA)
        cur=self.conn.cursor()
        cur.execute('delete from maxvalues where v_created<=?',(old_dt,))
        self.conn.commit()

    def __del__(self):
        self.conn.close()

bidsMAX=None
asksMAX=None

if __name__=='__main__':
    db=DBController()
    while True:
        try:
            bids=[[float(trunc(x[0],ROUND_VAL)),float(x[1])] for x in data['bids']]
            asks=[[float(trunc(x[0],ROUND_VAL)),float(x[1])] for x in data['asks']]
            dbids=data_to_dict(bids)
            dasks=data_to_dict(asks)
            bidsMAX=get_max(dbids)
            asksMAX=get_max(dasks)
            ###############
            print(bidsMAX)
            print(asksMAX)
            ###############
            db.insert_data(bidsMAX,asksMAX)
            db.delete_old()
        except:
            print('ERROR:',sys.exc_info())
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы