# coding=utf-8 import datetime import pymysql from loguru import logger import time class DbIf: def __init__(self, host="172.17.0.1", port=4419, user="root", password="IeQcJNnagkaFP1Or", dbname="btcdb"): self.conn = pymysql.connect(host=host, port=port, user=user, password=password, database=dbname,cursorclass=pymysql.cursors.DictCursor) def update_to_dailyindsv2(self, dt_utc, height_begin, height_end, lth_volume, frm, cvdd, realized_price, transferred_price, balanced_price, nvt_ratio, velocity): with self.conn.cursor() as cursor: print(dt_utc, height_begin, height_end, lth_volume, frm, cvdd, realized_price, transferred_price, balanced_price, nvt_ratio, velocity) sql_insert = "REPLACE INTO dailyindsv3e2 (unixdt, height_begin, height_end, lth_volume, frm, cvdd, realized_price, transferred_price, balanced_price, nvt_ratio, velocity" sql_insert = sql_insert + ") VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)" cursor.execute(sql_insert, ( dt_utc, height_begin, height_end, lth_volume, frm, cvdd, realized_price, transferred_price, balanced_price, nvt_ratio, velocity)) ''' def update_to_realtimeindsv2(self, dt_utc, mempool_volume, mempool_fees): with self.conn.cursor() as cursor: sql_insert = "REPLACE INTO realtimeindsv2b (unixdt, mempool_volume, mempool_fees)" cursor.execute(sql_insert, (dt_utc, mempool_volume, mempool_fees)) ''' def update_to_dailyinds(self, dt_utc, height_begin, height_end, profitrate, fees, txs, new_address, total_address, new_address_volume, active_address, send_address, receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr, asol, eaasol, dormancy, adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv, nupl,vdd): with self.conn.cursor() as cursor: sql_insert = "REPLACE INTO dailyindsv3e1 (unixdt, height_begin, height_end, profitrate, fees, txs, new_address, total_address, new_address_volume, active_address, send_address, receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr," sql_insert = sql_insert + " asol, eaasol, dormancy, adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, " sql_insert = sql_insert + " ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv, nupl,vdd" sql_insert = sql_insert + ") VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)" # print(sql_insert) cursor.execute(sql_insert, ( dt_utc, height_begin, height_end, profitrate, fees, txs, new_address, total_address, new_address_volume, active_address, send_address, receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr, asol, eaasol, dormancy, adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv, nupl,vdd)) self.conn.commit() ''' def update_to_dailyinds(self, dt_utc, height_begin, height_end, profitrate, fees, txs, new_address, new_address_volume, active_address, send_address, receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr, asol, eaasol, dormancy, adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv, lthmarketcap, lthrcap, sthmarketcap, sthrcap, lthmvrv, sthmvrv, nupl): with self.conn.cursor() as cursor: sql_insert = "REPLACE INTO dailyindsv1 (unixdt, height_begin, height_end, profitrate, fees, txs, new_address, new_address_volume, active_address, send_address, receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr," sql_insert = sql_insert + " asol, eaasol, dormancy, adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, " sql_insert = sql_insert + " ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv, lthmarketcap, lthrcap, sthmarketcap, sthrcap, lthmvrv, sthmvrv, nupl" sql_insert = sql_insert + ") VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)" # print(sql_insert) cursor.execute(sql_insert, ( dt_utc, height_begin, height_end, profitrate, fees, txs, new_address, new_address_volume, active_address, send_address, receive_address, volume, eavolume, sopr, asopr, easopr, lthsopr, sthsopr, asol, eaasol, dormancy, adormancy, eadormancy, cdd, sacdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv, lthmarketcap, lthrcap, sthmarketcap, sthrcap, lthmvrv, sthmvrv, nupl)) self.conn.commit() ''' ''' # daily daily on-chain volume def query_from_dailyvolume(self, start_id=0, end_id=0, start_time="", end_time="", limit=0): with self.conn.cursor() as cursor: sql_query = "SELECT * from `dailyvolume`" if start_id > 0: sql_query = sql_query + " WHERE id > " + str(start_id) if end_id > 0: sql_query = sql_query + " AND id < " + str(end_id) else: if end_id > 0: sql_query = sql_query + " WHERE id < " + str(end_id) if len(start_time) > 0: if len(end_time) > 0: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')" else: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())" else: if len(end_time) > 0: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')" sql_query = sql_query + " order by `unixdt` desc" if limit > 0: sql_query = sql_query + " LIMIT " + str(limit) print(sql_query) cursor.execute(sql_query) return cursor.fetchall() ''' # newaddrs ''' def update_to_newaddr(self, dayutc, last_profit_rate, last_fees, last_txs, last_eatxs, last_newaddr_cnt, last_newaddr_vol, last_active_addr_cnt, last_tx_addr_cnt, last_rx_addr_cnt, last_vol_change, last_vol): with self.conn.cursor() as cursor: sql_query = "SELECT COUNT(id) FROM `newaddrs` WHERE unixdt=FROM_UNIXTIME(%s)" cursor.execute(sql_query, {dayutc, }) result = cursor.fetchone() # print(dt_utc) # print(result) if result is not None: if "COUNT(id)" in result: if result["COUNT(id)"] > 0: print("update") sql_update = 'UPDATE newaddrs SET `total`=%s, `amount`=%s, `active`=%s, `tx`=%s, `rx`=%s, `volume_change`=%s, `volume=%s`,`txs`=%s, `eatxs`=%s, `fees`=%s, `last_profit_rate`=%s WHERE unixdt=FROM_UNIXTIME(%s)' cursor.execute(sql_update, ( last_newaddr_cnt, last_newaddr_vol, last_active_addr_cnt, last_tx_addr_cnt, last_rx_addr_cnt, last_vol_change, last_vol, last_txs, last_eatxs, last_fees, last_profit_rate, dayutc)) else: print("insert") sql_insert = "INSERT INTO `newaddrs` (`unixdt`, `total`, `amount`, `active`, `tx`, `rx`, `volume_change`, `volume`, `txs`, `eatxs`, `fees`, `last_profit_rate`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)" # print(sql_insert) cursor.execute(sql_insert, ( dayutc, last_newaddr_cnt, last_newaddr_vol, last_active_addr_cnt, last_tx_addr_cnt, last_rx_addr_cnt, last_vol_change, last_vol, last_txs, last_eatxs, last_fees, last_profit_rate)) self.conn.commit() ''' ''' def update_to_sellprofit(self, dayutc, current_price, block_buy_volume, block_sell_volume, block_sell_profit, last_height): with self.conn.cursor() as cursor: sql_insert = "INSERT INTO `dailybuysell` (`unixdt`, `price`, `buyvolume`, `sellvolume`, `sellprofit`, `height`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s)" #print(sql_insert) #print(datetime, txid, vout, voutalias, amount, height) cursor.execute(sql_insert, (dayutc, current_price, block_buy_volume, block_sell_volume, block_sell_profit, last_height)) self.conn.commit() ''' ''' def update_to_bigsellprofit(self, dayutc, current_price, tx_sell_average, tx_sell_amount, tx_sell_profit, days_earliest, days_latest, days_largest, days_current, tx_buy_address, txid, block_height): with self.conn.cursor() as cursor: sql_insert = "INSERT INTO `bigsell` (`unixdt`, `buyprice`, `sellprice`, `amount`, `profit`, `days_earliest`, `days_latest`, `days_largest`, `days_current`, `address`, `txid`, `height`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)" # print(sql_insert) # print(datetime, txid, vout, voutalias, amount, height) cursor.execute(sql_insert, ( dayutc, current_price, tx_sell_average, tx_sell_amount, tx_sell_profit, days_earliest, days_latest, days_largest, days_current, tx_buy_address, txid, block_height)) self.conn.commit() ''' ''' def update_to_dailycdd(self, dt_utc, cdd): with self.conn.cursor() as cursor: sql_insert = "REPLACE INTO `dailycdd` (`unixdt`, `cdd`) VALUES (FROM_UNIXTIME(%s), %s)" # print(sql_insert) cursor.execute(sql_insert, (dt_utc, cdd)) self.conn.commit() ''' ''' def update_to_dailycdddays(self, dt_utc, dormancy, adormancy, eadormancy, cdd, acdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730): with self.conn.cursor() as cursor: sql_insert = "REPLACE INTO `dailycdddays` (`unixdt`, dormancy, adormancy, eadormancy, cdd, acdd, eacdd, `day1`, day7, day30, day60, day90, day180, day365, day730) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)" # print(sql_insert) cursor.execute(sql_insert, ( dt_utc, dormancy, adormancy, eadormancy, cdd, acdd, eacdd, day1, day7, day30, day60, day90, day180, day365, day730)) self.conn.commit() ''' ''' def update_to_dailysopr(self, dt_utc, last_sopr, last_asopr, last_easopr, last_lth_sopr, last_sth_sopr): with self.conn.cursor() as cursor: sql_insert = "REPLACE INTO `dailysopr` (`unixdt`, `sopr`, asopr, easopr, lth_sopr, sth_sopr) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s)" # print(sql_insert) cursor.execute(sql_insert, (dt_utc, last_sopr, last_asopr, last_easopr, last_lth_sopr, last_sth_sopr)) self.conn.commit() ''' ''' def update_to_inds(self, dt_utc, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv): with self.conn.cursor() as cursor: sql_insert = "REPLACE INTO `inds` (`unixdt`, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)" # print(sql_insert) cursor.execute(sql_insert, ( dt_utc, csupply, mintusd, sumcsupply, sumcdd, sumeacdd, liveliness, ealiveliness, rprofit, rloss, rplrate, price, marketcap, rcap, earcap, mvrv)) self.conn.commit() ''' # daily volume ''' def update_to_dailyvolume(self, dt_utc, volume): with self.conn.cursor() as cursor: sql_insert = "REPLACE INTO `dailyvolume` (`unixdt`, `volume`) VALUES (FROM_UNIXTIME(%s), %s)" # print(sql_insert) cursor.execute(sql_insert, (dt_utc, volume)) self.conn.commit() ''' '''with self.conn.cursor() as cursor: sql_query = "SELECT COUNT(id) FROM `dailyvolume` WHERE unixdt=FROM_UNIXTIME(%s)" cursor.execute(sql_query, {dt_utc,}) result = cursor.fetchone() #print(dt_utc) #print(result) if result is not None: if "COUNT(id)" in result: if result["COUNT(id)"] > 0: print("update") sql_update = 'UPDATE dailyvolume SET `volume`=%s WHERE unixdt=FROM_UNIXTIME(%s)' cursor.execute(sql_update, (volume, dt_utc)) else: print("insert") sql_insert = "INSERT INTO `dailyvolume` (`unixdt`, `volume`) VALUES (FROM_UNIXTIME(%s), %s)" # print(sql_insert) cursor.execute(sql_insert, (dt_utc, volume)) self.conn.commit()''' ''' def update_to_dailyfees(self, dt_utc, fees): with self.conn.cursor() as cursor: sql_insert = "REPLACE INTO `dailyfees` (`unixdt`, `fees`) VALUES (FROM_UNIXTIME(%s), %s)" # print(sql_insert) cursor.execute(sql_insert, (dt_utc, fees)) self.conn.commit() ''' ''' def import_to_dailyvolume2(self, dt_utc, volume): with self.conn.cursor() as cursor: sql_insert = "INSERT INTO `dailyvolume` (`unixdt`, `volume`) VALUES (FROM_UNIXTIME(%s), %s)" # print(sql_insert) cursor.execute(sql_insert, (dt_utc, volume)) self.conn.commit() def delete_dailyvolume_data(self, config): with self.conn.cursor() as cursor: sql_query = "DELETE FROM `dailyvolume`" cursor.execute(sql_query) self.conn.commit() # daily market cap def query_from_marketcap(self, start_id=0, end_id=0, start_time="", end_time="", limit=0): with self.conn.cursor() as cursor: sql_query = "SELECT * from `dailyprice`" if start_id > 0: sql_query = sql_query + " WHERE id > " + str(start_id) if end_id > 0: sql_query = sql_query + " AND id < " + str(end_id) else: if end_id > 0: sql_query = sql_query + " WHERE id < " + str(end_id) if len(start_time) > 0: if len(end_time) > 0: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')" else: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())" else: if len(end_time) > 0: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')" sql_query = sql_query + " order by `unixdt` desc" if limit > 0: sql_query = sql_query + " LIMIT " + str(limit) print(sql_query) cursor.execute(sql_query) return cursor.fetchall() #daily price def import_to_dailyprice(self, dt_utc, price, volume, marketcap, csupply): with self.conn.cursor() as cursor: sql_insert = "INSERT INTO `dailyprice` (`unixdt`, `price`, `volume`, `marketcap`, `csupply`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s)" #print(sql_insert) cursor.execute(sql_insert, (dt_utc, price, volume, marketcap, csupply)) self.conn.commit() def update_to_dailyprice(self, dt_utc, price, volume, change): with self.conn.cursor() as cursor: sql_insert = "INSERT INTO `dailyprice` (`unixdt`, `price`, `volume`, `change`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s)" #print(sql_insert) cursor.execute(sql_insert, (dt_utc, price, volume, change)) self.conn.commit() def update_to_dailyprice2(self, dt_utc, price, volume, change, marketcap, csupply): with self.conn.cursor() as cursor: sql_query = "SELECT COUNT(id) FROM `dailyprice` WHERE unixdt=FROM_UNIXTIME(%s)" cursor.execute(sql_query, {dt_utc,}) result = cursor.fetchone() #print(dt_utc) #print(result) if result is not None: if "COUNT(id)" in result: if result["COUNT(id)"] > 0: print("update") sql_update = 'UPDATE dailyprice SET `price`=%s, `marketcap`=%s, `csupply`=%s, `volume`=%s, `change`=%s WHERE unixdt=FROM_UNIXTIME(%s)' cursor.execute(sql_update, (price, marketcap, csupply, volume, change, dt_utc)) else: print("insert") sql_insert = "INSERT INTO `dailyprice` (`unixdt`, `price`, `volume`, `change`, `marketcap`, `csupply`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s)" # print(sql_insert) cursor.execute(sql_insert, (dt_utc, price, volume, change, marketcap, csupply)) self.conn.commit() def update_dailypricechange(self): with self.conn.cursor() as cursor: sql_query = "SELECT unixdt,price FROM `dailyprice` order by unixdt" cursor.execute(sql_query) results = cursor.fetchall() prevprice = -1 for result in results: if prevprice < 0: prevprice = result["price"] else: #print(result["unixdt"], result["price"], result["marketcap"]) try: change = (result["price"]/prevprice - 1)*100 except: change = 0 #print(csupply) datestr = result["unixdt"] logger.debug(datestr.__format__('%Y-%m-%d') + " " + str(change)) sql_update = 'UPDATE dailyprice SET `change`=%s WHERE unixdt=%s' cursor.execute(sql_update, (str(change), result["unixdt"])) prevprice = result["price"] self.conn.commit() def delete_dailyprice_data(self, config): with self.conn.cursor() as cursor: sql_query = "DELETE FROM `dailyprice`" cursor.execute(sql_query) self.conn.commit() def delete_failed_blockvolume(self, height): with self.conn.cursor() as cursor: sql_insert = "DELETE FROM `bigamountvout` WHERE height=%s" cursor.execute(sql_insert, (height,)) sql_insert = "DELETE FROM `bigamounttx` WHERE height=%s" cursor.execute(sql_insert, (height,)) sql_insert = "DELETE FROM `blockamount` WHERE height=%s" cursor.execute(sql_insert, (height,)) self.conn.commit() #block check --- big amount for vout def query_from_bigamountvout(self, start_id=0, end_id=0, start_time="", end_time="", address="", limit=0): with self.conn.cursor() as cursor: sql_query = "SELECT * from `bigamountvout`" if start_id > 0: sql_query = sql_query + " WHERE id > " + str(start_id) if end_id > 0: sql_query = sql_query + " AND id < " + str(end_id) else: if end_id > 0: sql_query = sql_query + " WHERE id < " + str(end_id) if len(start_time) > 0: if len(end_time) > 0: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')" else: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())" else: if len(end_time) > 0: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')" sql_query = sql_query + " order by `unixdt` desc" if limit > 0: sql_query = sql_query + " LIMIT " + str(limit) print(sql_query) cursor.execute(sql_query) return cursor.fetchall() ''' def update_to_bigamountvout(self, datetime, txid, vout, voutn, vouttype, amount, height, days, buyin, sellout, profit): with self.conn.cursor() as cursor: sql_insert = "INSERT INTO `bigamountvoutv3e` (`unixdt`, `vout`, `voutn`, `vouttype`, `amount`, `height`, `txid`, days, buyprice, sellprice, profit) VALUES (FROM_UNIXTIME(%s), %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)" # print(sql_insert) # print(datetime, txid, vout, voutalias, amount, height) cursor.execute(sql_insert, (datetime, vout, voutn, vouttype, amount, height, txid, days, buyin, sellout, profit)) self.conn.commit() ''' # block check --- big amount tx def query_from_bigamounttx(self, start_id=0, end_id=0, start_time="", end_time="", address="", limit=0): with self.conn.cursor() as cursor: sql_query = "SELECT * from `bigamounttx`" if start_id > 0: sql_query = sql_query + " WHERE id > " + str(start_id) if end_id > 0: sql_query = sql_query + " AND id < " + str(end_id) else: if end_id > 0: sql_query = sql_query + " WHERE id < " + str(end_id) if len(start_time) > 0: if len(end_time) > 0: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')" else: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())" else: if len(end_time) > 0: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')" sql_query = sql_query + " order by `unixdt` desc" if limit > 0: sql_query = sql_query + " LIMIT " + str(limit) print(sql_query) cursor.execute(sql_query) return cursor.fetchall() def update_to_bigamounttx(self, datetime, txid, amount, height): with self.conn.cursor() as cursor: sql_insert = "INSERT INTO `bigamounttx` (`unixdt`, `amount`, `height`, `txid`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s)" #print(sql_insert) #print(datetime, txid, amount, height) cursor.execute(sql_insert, (datetime, amount, height, txid)) self.conn.commit() # block check --- per block amount def query_from_blockamount(self, start_id=0, end_id=0, start_time="", end_time="", limit=0, amount=0): with self.conn.cursor() as cursor: sql_query = "SELECT * from `blockamount`" if start_id > 0: sql_query = sql_query + " WHERE id > " + str(start_id) if end_id > 0: sql_query = sql_query + " AND id < " + str(end_id) if amount > 0: sql_query = sql_query + " AND amount > " + str(amount) else: if end_id > 0: sql_query = sql_query + " WHERE id < " + str(end_id) if amount > 0: sql_query = sql_query + " AND amount > " + str(amount) else: if amount > 0: sql_query = sql_query + "WHERE amount > " + str(amount) if len(start_time) > 0: if len(end_time) > 0: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')" else: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())" if amount > 0: sql_query = sql_query + " AND amount > " + str(amount) else: if len(end_time) > 0: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')" if amount > 0: sql_query = sql_query + " AND amount > " + str(amount) sql_query = sql_query + " order by `unixdt` desc" if limit > 0: sql_query = sql_query + " LIMIT " + str(limit) cursor.execute(sql_query) return cursor.fetchall() def update_to_blockamount(self, datetime, blockid, amount, height): with self.conn.cursor() as cursor: sql_insert = "INSERT INTO `blockamount` (`unixdt`, `amount`, `height`, `blockid`) VALUES (FROM_UNIXTIME(%s), %s, %s, %s)" #print(sql_insert) #print(datetime, blockid, amount, height) cursor.execute(sql_insert, (datetime, amount, height, blockid)) self.conn.commit() def delete_node_data(self, config): with self.conn.cursor() as cursor: sql_query = "DELETE FROM `blockamount`" cursor.execute(sql_query) sql_query = "DELETE FROM `bigamountvout`" cursor.execute(sql_query) sql_query = "DELETE FROM `bigamounttx`" cursor.execute(sql_query) self.conn.commit() def update_realize_cap(self, dayutc, last_rv): with self.conn.cursor() as cursor: sql_insert = "INSERT INTO `dailyrcap` (`unixdt`, `rcap`) VALUES (FROM_UNIXTIME(%s), %s)" #print(sql_insert) #print(datetime, blockid, amount, height) cursor.execute(sql_insert, (dayutc, last_rv)) self.conn.commit() # daily realize cap def query_from_realizecap(self, start_id=0, end_id=0, start_time="", end_time="", limit=0): with self.conn.cursor() as cursor: sql_query = "SELECT * from `dailyrcap`" if start_id > 0: sql_query = sql_query + " WHERE id > " + str(start_id) if end_id > 0: sql_query = sql_query + " AND id < " + str(end_id) else: if end_id > 0: sql_query = sql_query + " WHERE id < " + str(end_id) if len(start_time) > 0: if len(end_time) > 0: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(\'" + end_time + "\')" else: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(\'" + start_time + "\') AND UNIX_TIMESTAMP(NOW())" else: if len(end_time) > 0: sql_query = sql_query + " WHERE UNIX_TIMESTAMP(unixdt) BETWEEN \ UNIX_TIMESTAMP(NOW()) AND UNIX_TIMESTAMP(\'" + end_time + "\')" sql_query = sql_query + " order by `unixdt` desc" if limit > 0: sql_query = sql_query + " LIMIT " + str(limit) print(sql_query) cursor.execute(sql_query) return cursor.fetchall() def update_daily_addr(self, dayutc, last_add_cnt): with self.conn.cursor() as cursor: sql_insert = "INSERT INTO `dailyaddradd` (`unixdt`, `addcnt`) VALUES (FROM_UNIXTIME(%s), %s)" #print(sql_insert) #print(datetime, blockid, amount, height) cursor.execute(sql_insert, (dayutc, last_add_cnt)) self.conn.commit() def delete_daily_addr(self, config): with self.conn.cursor() as cursor: sql_query = "DELETE FROM `dailyaddradd`" cursor.execute(sql_query) self.conn.commit() def delete_daily_rv(self, config): with self.conn.cursor() as cursor: sql_query = "DELETE FROM `dailyrcap`" cursor.execute(sql_query) self.conn.commit() ''' def __del__(self): self.conn.close()