{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "4cae6bf1", "metadata": {}, "outputs": [], "source": [ "from sqlalchemy import create_engine, text\n", "import pandas as pd\n", "from datetime import datetime" ] }, { "cell_type": "code", "execution_count": 2, "id": "f5040527", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Connection successful\n" ] } ], "source": [ "### MYSQL ###\n", "engine = create_engine('mysql+pymysql://root:pwd@localhost/polymarket')\n", "try:\n", " with engine.connect() as conn:\n", " print(\"Connection successful\")\n", "except Exception as e:\n", " print(f\"Connection failed: {e}\") " ] }, { "cell_type": "code", "execution_count": 10, "id": "72059b3f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Connection successful\n" ] } ], "source": [ "### MYSQL ###\n", "engine_inter_storage = create_engine('mysql+pymysql://root:pwd@100.84.226.40/polymarket')\n", "try:\n", " with engine.connect() as conn:\n", " print(\"Connection successful\")\n", "except Exception as e:\n", " print(f\"Connection failed: {e}\") " ] }, { "cell_type": "code", "execution_count": 48, "id": "b723a51f", "metadata": {}, "outputs": [], "source": [ "# with engine.connect() as conn:\n", "# print(\"Connection successful\")\n", "# sql = text(\"TRUNCATE TABLE coinbase_btcusd_trades;\")\n", "# conn.execute(sql)" ] }, { "cell_type": "code", "execution_count": 3, "id": "5c23110d", "metadata": {}, "outputs": [], "source": [ "q_binance = '''\n", "SELECT * FROM binance_btcusd_trades;\n", "'''\n", "q_coinbase = '''\n", "SELECT * FROM coinbase_btcusd_trades;\n", "'''\n", "q_rtds = '''\n", "SELECT * FROM poly_rtds_cl_btcusd;\n", "'''\n", "q_clob = '''\n", "SELECT * FROM poly_btcusd_trades;\n", "'''" ] }, { "cell_type": "code", "execution_count": 4, "id": "a866e9ca", "metadata": {}, "outputs": [], "source": [ "# df_binance = pd.read_sql(q_binance, con=engine)\n", "# df_coinbase = pd.read_sql(q_coinbase, con=engine)\n", "# df_rtds = pd.read_sql(q_rtds, con=engine)\n", "df_clob = pd.read_sql(q_clob, con=engine)" ] }, { "cell_type": "code", "execution_count": 5, "id": "954a3c3c", "metadata": {}, "outputs": [], "source": [ "# df_binance['timestamp_arrival'] = pd.to_datetime(df_binance['timestamp_arrival'], unit='ms')\n", "# df_coinbase['timestamp_arrival'] = pd.to_datetime(df_coinbase['timestamp_arrival'], unit='ms')\n", "# df_rtds['timestamp_arrival'] = pd.to_datetime(df_rtds['timestamp_arrival'], unit='ms')\n", "df_clob['timestamp_arrival_dt'] = pd.to_datetime(df_clob['timestamp_arrival'], unit='ms')" ] }, { "cell_type": "code", "execution_count": 57, "id": "50c6339f", "metadata": {}, "outputs": [], "source": [ "def copy_table_data_btw_servers(df, table_name, engine_destination) -> None:\n", " rows_imported = df.to_sql(name=table_name, con=engine_destination, if_exists='append')\n", " if rows_imported == len(df):\n", " print(f'SUCCESS: COPIED {rows_imported} to table \"{table_name}\" on INTERSERVER_STORAGE')\n", " else:\n", " raise ValueError(f'FAILED: COPIED {rows_imported} rows to table {table_name} on INTERSERVER_STORAGE; EXPECTED {len(df)}')\n", " \n", "def truncate_table(engine, table):\n", " with engine.connect() as conn:\n", " sql = text(f\"TRUNCATE TABLE {table};\")\n", " conn.execute(sql)\n", " conn.commit()" ] }, { "cell_type": "code", "execution_count": 61, "id": "d0399a96", "metadata": {}, "outputs": [], "source": [ "def backup_all_tables(engine_origin, engine_destination, tables_to_copy):\n", " for t in tables_to_copy:\n", " q = f'''\n", " SELECT * FROM {t};\n", " '''\n", " df = pd.read_sql(q, con=engine_origin)\n", " print('-------------------------------------------------------------------------')\n", " print(f'Loaded Data for Table: {t}...Attempting to Transfer to Destination Server')\n", " copy_table_data_btw_servers(\n", " df=df,\n", " table_name=t,\n", " engine_destination=engine_destination,\n", " )\n", " print(f'Attempting to Truncate Table: {t}...')\n", " \n", " ### FOR REALTIME - instead of truncate, need to delete rows using a conditon (e.g. delete all rows <= max timestamp arrival in the DF)\n", " \n", " truncate_table(\n", " engine=engine_origin,\n", " table=t,\n", " )\n", " print(f'...Successfully Truncated Table: {t}')\n", " print(f'Done Transferring Data for Table: {t}')\n", " \n" ] }, { "cell_type": "code", "execution_count": 59, "id": "0de1629a", "metadata": {}, "outputs": [], "source": [ "tables_to_copy = [\n", " # 'binance_btcusd_trades',\n", " # 'coinbase_btcusd_trades',\n", " 'poly_btcusd_trades',\n", " 'poly_rtds_cl_btcusd',\n", " # 'user_stream_orders',\n", " # 'user_stream_trades',\n", "]" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-------------------------------------------------------------------------\n", "Loaded Data for Table: poly_btcusd_trades...Attempting to Transfer to Destination Server\n", "SUCCESS: COPIED 720568 to table \"poly_btcusd_trades\" on INTERSERVER_STORAGE\n", "Attempting to Truncate Table: poly_btcusd_trades...\n", "...Successfully Truncated Table: poly_btcusd_trades\n", "Done Transferring Data for Table: poly_btcusd_trades\n", "-------------------------------------------------------------------------\n", "Loaded Data for Table: poly_rtds_cl_btcusd...Attempting to Transfer to Destination Server\n", "SUCCESS: COPIED 73771 to table \"poly_rtds_cl_btcusd\" on INTERSERVER_STORAGE\n", "Attempting to Truncate Table: poly_rtds_cl_btcusd...\n", "...Successfully Truncated Table: poly_rtds_cl_btcusd\n", "Done Transferring Data for Table: poly_rtds_cl_btcusd\n" ] } ], "source": [ "backup_all_tables(\n", " engine_origin=engine,\n", " engine_destination=engine_inter_storage,\n", " tables_to_copy=tables_to_copy\n", ")" ] }, { "cell_type": "code", "execution_count": 75, "id": "85555ab4", "metadata": {}, "outputs": [], "source": [ "sql = text('''\n", "OPTIMIZE TABLE binance_btcusd_trades;\n", "''')\n", "sql = text('''\n", "SELECT \n", " table_name, \n", " data_length, \n", " index_length, \n", " data_free \n", "FROM information_schema.tables;\n", "''')" ] }, { "cell_type": "code", "execution_count": 70, "id": "a665c36f", "metadata": {}, "outputs": [], "source": [ "with engine.connect() as conn:\n", " conn.execute(sql)\n", " conn.commit()" ] }, { "cell_type": "code", "execution_count": 76, "id": "db71f3b0", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | TABLE_NAME | \n", "DATA_LENGTH | \n", "INDEX_LENGTH | \n", "DATA_FREE | \n", "
|---|---|---|---|---|
| 0 | \n", "innodb_table_stats | \n", "16384.0 | \n", "0.0 | \n", "4194304.0 | \n", "
| 1 | \n", "innodb_index_stats | \n", "16384.0 | \n", "0.0 | \n", "4194304.0 | \n", "
| 2 | \n", "CHARACTER_SETS | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
| 3 | \n", "CHECK_CONSTRAINTS | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
| 4 | \n", "COLLATIONS | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 342 | \n", "user_stream_trades | \n", "81920.0 | \n", "0.0 | \n", "0.0 | \n", "
| 343 | \n", "user_stream_orders | \n", "16384.0 | \n", "0.0 | \n", "0.0 | \n", "
| 344 | \n", "executions_orders | \n", "16384.0 | \n", "0.0 | \n", "0.0 | \n", "
| 345 | \n", "poly_btcusd_trades | \n", "37289984.0 | \n", "0.0 | \n", "4194304.0 | \n", "
| 346 | \n", "binance_btcusd_trades | \n", "58294272.0 | \n", "0.0 | \n", "4194304.0 | \n", "
347 rows × 4 columns
\n", "| \n", " | timestamp_arrival | \n", "timestamp_msg | \n", "timestamp_value | \n", "price | \n", "qty | \n", "side_taker | \n", "up_or_down | \n", "timestamp_arrival_dt | \n", "
|---|---|---|---|---|---|---|---|---|
| 0 | \n", "1775064793645 | \n", "1775064793630 | \n", "1775064793630 | \n", "0.59 | \n", "477.003500 | \n", "BUY | \n", "UP | \n", "2026-04-01 17:33:13.645 | \n", "
| 1 | \n", "1775064793763 | \n", "1775064793753 | \n", "1775064793753 | \n", "0.43 | \n", "23.255812 | \n", "BUY | \n", "DOWN | \n", "2026-04-01 17:33:13.763 | \n", "
| 2 | \n", "1775064793843 | \n", "1775064793830 | \n", "1775064793830 | \n", "0.43 | \n", "2.325580 | \n", "BUY | \n", "DOWN | \n", "2026-04-01 17:33:13.843 | \n", "
| 3 | \n", "1775064793915 | \n", "1775064793905 | \n", "1775064793905 | \n", "0.58 | \n", "10.020000 | \n", "BUY | \n", "UP | \n", "2026-04-01 17:33:13.915 | \n", "
| 4 | \n", "1775064794077 | \n", "1775064794064 | \n", "1775064794064 | \n", "0.43 | \n", "5.000000 | \n", "BUY | \n", "DOWN | \n", "2026-04-01 17:33:14.077 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 672629 | \n", "1775158573032 | \n", "1775158573022 | \n", "1775158573022 | \n", "0.37 | \n", "3.243242 | \n", "BUY | \n", "DOWN | \n", "2026-04-02 19:36:13.032 | \n", "
| 672630 | \n", "1775158573316 | \n", "1775158573304 | \n", "1775158573304 | \n", "0.64 | \n", "15.625000 | \n", "BUY | \n", "UP | \n", "2026-04-02 19:36:13.316 | \n", "
| 672631 | \n", "1775158573365 | \n", "1775158573352 | \n", "1775158573352 | \n", "0.64 | \n", "8.200000 | \n", "BUY | \n", "UP | \n", "2026-04-02 19:36:13.365 | \n", "
| 672632 | \n", "1775158573672 | \n", "1775158573661 | \n", "1775158573661 | \n", "0.37 | \n", "200.000000 | \n", "BUY | \n", "DOWN | \n", "2026-04-02 19:36:13.672 | \n", "
| 672633 | \n", "1775158573933 | \n", "1775158573921 | \n", "1775158573921 | \n", "0.64 | \n", "7.812500 | \n", "BUY | \n", "UP | \n", "2026-04-02 19:36:13.933 | \n", "
672634 rows × 8 columns
\n", "| \n", " | timestamp_arrival | \n", "timestamp_msg | \n", "timestamp_value | \n", "price | \n", "qty | \n", "side_taker | \n", "up_or_down | \n", "timestamp_arrival_dt | \n", "
|---|---|---|---|---|---|---|---|---|
| 657118 | \n", "1775157300177 | \n", "1775157300166 | \n", "1775157300166 | \n", "0.48 | \n", "2.083332 | \n", "BUY | \n", "UP | \n", "2026-04-02 19:15:00.177 | \n", "
| 657119 | \n", "1775157300554 | \n", "1775157300540 | \n", "1775157300540 | \n", "0.47 | \n", "6.000000 | \n", "SELL | \n", "UP | \n", "2026-04-02 19:15:00.554 | \n", "
| 657120 | \n", "1775157300575 | \n", "1775157300561 | \n", "1775157300561 | \n", "0.53 | \n", "3.000000 | \n", "BUY | \n", "DOWN | \n", "2026-04-02 19:15:00.575 | \n", "
| 657121 | \n", "1775157300645 | \n", "1775157300634 | \n", "1775157300634 | \n", "0.48 | \n", "29.570000 | \n", "BUY | \n", "UP | \n", "2026-04-02 19:15:00.645 | \n", "
| 657122 | \n", "1775157300689 | \n", "1775157300677 | \n", "1775157300677 | \n", "0.50 | \n", "20.000000 | \n", "BUY | \n", "UP | \n", "2026-04-02 19:15:00.689 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 657193 | \n", "1775157304972 | \n", "1775157304940 | \n", "1775157304940 | \n", "0.50 | \n", "40.000000 | \n", "BUY | \n", "DOWN | \n", "2026-04-02 19:15:04.972 | \n", "
| 657194 | \n", "1775157304979 | \n", "1775157304955 | \n", "1775157304955 | \n", "0.50 | \n", "40.000000 | \n", "BUY | \n", "DOWN | \n", "2026-04-02 19:15:04.979 | \n", "
| 657195 | \n", "1775157304986 | \n", "1775157304965 | \n", "1775157304965 | \n", "0.50 | \n", "10.200000 | \n", "BUY | \n", "DOWN | \n", "2026-04-02 19:15:04.986 | \n", "
| 657196 | \n", "1775157304991 | \n", "1775157304973 | \n", "1775157304973 | \n", "0.50 | \n", "6.000000 | \n", "BUY | \n", "DOWN | \n", "2026-04-02 19:15:04.991 | \n", "
| 657197 | \n", "1775157304999 | \n", "1775157304988 | \n", "1775157304988 | \n", "0.50 | \n", "40.000000 | \n", "BUY | \n", "DOWN | \n", "2026-04-02 19:15:04.999 | \n", "
80 rows × 8 columns
\n", "