98 lines
3.3 KiB
Python
98 lines
3.3 KiB
Python
import sqlite3
|
|
from v2realbot.config import DATA_DIR
|
|
from v2realbot.utils.utils import json_serial
|
|
from uuid import UUID, uuid4
|
|
import json
|
|
from datetime import datetime
|
|
from v2realbot.enums.enums import RecordType, StartBarAlign, Mode, Account
|
|
|
|
sqlite_db_file = DATA_DIR + "/v2trading.db"
|
|
conn = sqlite3.connect(sqlite_db_file)
|
|
#standardne vraci pole tuplů, kde clen tuplu jsou sloupce
|
|
#conn.row_factory = lambda c, r: json.loads(r[0])
|
|
#conn.row_factory = lambda c, r: r[0]
|
|
#conn.row_factory = sqlite3.Row
|
|
|
|
#CREATE TABLE
|
|
# c = conn.cursor()
|
|
# createTable= "CREATE TABLE runner_logs (runner_id varchar(32) NOT NULL, time real NOT NULL, data json NOT NULL);"
|
|
# print(c.execute(createTable))
|
|
# sql = ("CREATE INDEX index_runner_logs ON runner_logs (runner_id, time);")
|
|
# print(c.execute(sql))
|
|
|
|
#testovaci objekty
|
|
insert = dict(time=datetime.now(), side="ddd", rectype=RecordType.BAR, id=uuid4())
|
|
insert_list = [dict(time=datetime.now().timestamp(), side="ddd", rectype=RecordType.BAR, id=uuid4()),dict(time=datetime.now().timestamp(), side="ddd", rectype=RecordType.BAR, id=uuid4()),dict(time=datetime.now().timestamp(), side="ddd", rectype=RecordType.BAR, id=uuid4()),dict(time=datetime.now().timestamp(), side="ddd", rectype=RecordType.BAR, id=uuid4())]
|
|
|
|
def insert_log(runner_id: UUID, time: float, logdict: dict):
|
|
c = conn.cursor()
|
|
json_string = json.dumps(logdict, default=json_serial)
|
|
res = c.execute("INSERT INTO runner_logs VALUES (?,?,?)",[str(runner_id), time, json_string])
|
|
conn.commit()
|
|
return res.rowcount
|
|
|
|
def insert_log_multiple(runner_id: UUID, loglist: list):
|
|
c = conn.cursor()
|
|
insert_data = []
|
|
for i in loglist:
|
|
row = (str(runner_id), i["time"], json.dumps(i, default=json_serial))
|
|
insert_data.append(row)
|
|
c.executemany("INSERT INTO runner_logs VALUES (?,?,?)", insert_data)
|
|
conn.commit()
|
|
return c.rowcount
|
|
|
|
# c = conn.cursor()
|
|
# json_string = json.dumps(logdict, default=json_serial)
|
|
# res = c.execute("INSERT INTO runner_logs VALUES (?,?,?)",[str(runner_id), time, json_string])
|
|
# print(res)
|
|
# conn.commit()
|
|
# return res
|
|
|
|
#returns list of ilog jsons
|
|
def read_log_window(runner_id: UUID, timestamp_from: float, timestamp_to: float):
|
|
conn.row_factory = lambda c, r: json.loads(r[0])
|
|
c = conn.cursor()
|
|
res = c.execute(f"SELECT data FROM runner_logs WHERE runner_id='{str(runner_id)}' AND time >={ts_from} AND time <={ts_to}")
|
|
return res.fetchall()
|
|
|
|
#returns number of deleted elements
|
|
def delete_logs(runner_id: UUID):
|
|
c = conn.cursor()
|
|
res = c.execute(f"DELETE from runner_logs WHERE runner_id='{str(runner_id)}';")
|
|
print(res.rowcount)
|
|
conn.commit()
|
|
return res.rowcount
|
|
|
|
print(insert_log(str(uuid4()), datetime.now().timestamp(), insert))
|
|
c = conn.cursor()
|
|
ts_from = 1683108821.08872
|
|
ts_to = 1683108821.08874
|
|
# res = c.execute(f"SELECT runner_id, time, data FROM runner_logs where time > {ts_from} and time <{ts_to}")
|
|
# result = res.fetchall()
|
|
|
|
# res= delete_logs("7f9866ac-c742-47f4-a329-1d2b6721e781")
|
|
# print(res)
|
|
|
|
# res = read_log_window(runner_id="33", timestamp_from=11 , timestamp_to=22)
|
|
# print(res)
|
|
|
|
res = insert_log_multiple(uuid4(), insert_list)
|
|
print(res)
|
|
|
|
# res = read_log_window("3340e257-d19a-4179-baf3-3b39190acde3", ts_from, ts_to)
|
|
|
|
# print(res)
|
|
|
|
# for r in res.fetchall():
|
|
# print(dict(r))
|
|
|
|
|
|
#print(res.description)
|
|
#print(result)
|
|
|
|
|
|
|
|
|
|
|
|
|