Всем ку! Приходят данные через api. Но почему то не обновляются, ни в бд, ни в принте.
После первого запроса, происходит дублирование его же и все. Если перезапустить. Новые данные поступают и тут же циклично повторяются... Как быть?(((
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())