{ "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", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TABLE_NAMEDATA_LENGTHINDEX_LENGTHDATA_FREE
0innodb_table_stats16384.00.04194304.0
1innodb_index_stats16384.00.04194304.0
2CHARACTER_SETS0.00.00.0
3CHECK_CONSTRAINTS0.00.00.0
4COLLATIONS0.00.00.0
...............
342user_stream_trades81920.00.00.0
343user_stream_orders16384.00.00.0
344executions_orders16384.00.00.0
345poly_btcusd_trades37289984.00.04194304.0
346binance_btcusd_trades58294272.00.04194304.0
\n", "

347 rows × 4 columns

\n", "
" ], "text/plain": [ " TABLE_NAME DATA_LENGTH INDEX_LENGTH DATA_FREE\n", "0 innodb_table_stats 16384.0 0.0 4194304.0\n", "1 innodb_index_stats 16384.0 0.0 4194304.0\n", "2 CHARACTER_SETS 0.0 0.0 0.0\n", "3 CHECK_CONSTRAINTS 0.0 0.0 0.0\n", "4 COLLATIONS 0.0 0.0 0.0\n", ".. ... ... ... ...\n", "342 user_stream_trades 81920.0 0.0 0.0\n", "343 user_stream_orders 16384.0 0.0 0.0\n", "344 executions_orders 16384.0 0.0 0.0\n", "345 poly_btcusd_trades 37289984.0 0.0 4194304.0\n", "346 binance_btcusd_trades 58294272.0 0.0 4194304.0\n", "\n", "[347 rows x 4 columns]" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.read_sql(sql, con=engine)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "b06c6a3e", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
timestamp_arrivaltimestamp_msgtimestamp_valuepriceqtyside_takerup_or_downtimestamp_arrival_dt
01775064793645177506479363017750647936300.59477.003500BUYUP2026-04-01 17:33:13.645
11775064793763177506479375317750647937530.4323.255812BUYDOWN2026-04-01 17:33:13.763
21775064793843177506479383017750647938300.432.325580BUYDOWN2026-04-01 17:33:13.843
31775064793915177506479390517750647939050.5810.020000BUYUP2026-04-01 17:33:13.915
41775064794077177506479406417750647940640.435.000000BUYDOWN2026-04-01 17:33:14.077
...........................
6726291775158573032177515857302217751585730220.373.243242BUYDOWN2026-04-02 19:36:13.032
6726301775158573316177515857330417751585733040.6415.625000BUYUP2026-04-02 19:36:13.316
6726311775158573365177515857335217751585733520.648.200000BUYUP2026-04-02 19:36:13.365
6726321775158573672177515857366117751585736610.37200.000000BUYDOWN2026-04-02 19:36:13.672
6726331775158573933177515857392117751585739210.647.812500BUYUP2026-04-02 19:36:13.933
\n", "

672634 rows × 8 columns

\n", "
" ], "text/plain": [ " timestamp_arrival timestamp_msg timestamp_value price qty \\\n", "0 1775064793645 1775064793630 1775064793630 0.59 477.003500 \n", "1 1775064793763 1775064793753 1775064793753 0.43 23.255812 \n", "2 1775064793843 1775064793830 1775064793830 0.43 2.325580 \n", "3 1775064793915 1775064793905 1775064793905 0.58 10.020000 \n", "4 1775064794077 1775064794064 1775064794064 0.43 5.000000 \n", "... ... ... ... ... ... \n", "672629 1775158573032 1775158573022 1775158573022 0.37 3.243242 \n", "672630 1775158573316 1775158573304 1775158573304 0.64 15.625000 \n", "672631 1775158573365 1775158573352 1775158573352 0.64 8.200000 \n", "672632 1775158573672 1775158573661 1775158573661 0.37 200.000000 \n", "672633 1775158573933 1775158573921 1775158573921 0.64 7.812500 \n", "\n", " side_taker up_or_down timestamp_arrival_dt \n", "0 BUY UP 2026-04-01 17:33:13.645 \n", "1 BUY DOWN 2026-04-01 17:33:13.763 \n", "2 BUY DOWN 2026-04-01 17:33:13.843 \n", "3 BUY UP 2026-04-01 17:33:13.915 \n", "4 BUY DOWN 2026-04-01 17:33:14.077 \n", "... ... ... ... \n", "672629 BUY DOWN 2026-04-02 19:36:13.032 \n", "672630 BUY UP 2026-04-02 19:36:13.316 \n", "672631 BUY UP 2026-04-02 19:36:13.365 \n", "672632 BUY DOWN 2026-04-02 19:36:13.672 \n", "672633 BUY UP 2026-04-02 19:36:13.933 \n", "\n", "[672634 rows x 8 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_clob" ] }, { "cell_type": "code", "execution_count": 7, "id": "48b47799", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
timestamp_arrivaltimestamp_msgtimestamp_valuepriceqtyside_takerup_or_downtimestamp_arrival_dt
6571181775157300177177515730016617751573001660.482.083332BUYUP2026-04-02 19:15:00.177
6571191775157300554177515730054017751573005400.476.000000SELLUP2026-04-02 19:15:00.554
6571201775157300575177515730056117751573005610.533.000000BUYDOWN2026-04-02 19:15:00.575
6571211775157300645177515730063417751573006340.4829.570000BUYUP2026-04-02 19:15:00.645
6571221775157300689177515730067717751573006770.5020.000000BUYUP2026-04-02 19:15:00.689
...........................
6571931775157304972177515730494017751573049400.5040.000000BUYDOWN2026-04-02 19:15:04.972
6571941775157304979177515730495517751573049550.5040.000000BUYDOWN2026-04-02 19:15:04.979
6571951775157304986177515730496517751573049650.5010.200000BUYDOWN2026-04-02 19:15:04.986
6571961775157304991177515730497317751573049730.506.000000BUYDOWN2026-04-02 19:15:04.991
6571971775157304999177515730498817751573049880.5040.000000BUYDOWN2026-04-02 19:15:04.999
\n", "

80 rows × 8 columns

\n", "
" ], "text/plain": [ " timestamp_arrival timestamp_msg timestamp_value price qty \\\n", "657118 1775157300177 1775157300166 1775157300166 0.48 2.083332 \n", "657119 1775157300554 1775157300540 1775157300540 0.47 6.000000 \n", "657120 1775157300575 1775157300561 1775157300561 0.53 3.000000 \n", "657121 1775157300645 1775157300634 1775157300634 0.48 29.570000 \n", "657122 1775157300689 1775157300677 1775157300677 0.50 20.000000 \n", "... ... ... ... ... ... \n", "657193 1775157304972 1775157304940 1775157304940 0.50 40.000000 \n", "657194 1775157304979 1775157304955 1775157304955 0.50 40.000000 \n", "657195 1775157304986 1775157304965 1775157304965 0.50 10.200000 \n", "657196 1775157304991 1775157304973 1775157304973 0.50 6.000000 \n", "657197 1775157304999 1775157304988 1775157304988 0.50 40.000000 \n", "\n", " side_taker up_or_down timestamp_arrival_dt \n", "657118 BUY UP 2026-04-02 19:15:00.177 \n", "657119 SELL UP 2026-04-02 19:15:00.554 \n", "657120 BUY DOWN 2026-04-02 19:15:00.575 \n", "657121 BUY UP 2026-04-02 19:15:00.645 \n", "657122 BUY UP 2026-04-02 19:15:00.689 \n", "... ... ... ... \n", "657193 BUY DOWN 2026-04-02 19:15:04.972 \n", "657194 BUY DOWN 2026-04-02 19:15:04.979 \n", "657195 BUY DOWN 2026-04-02 19:15:04.986 \n", "657196 BUY DOWN 2026-04-02 19:15:04.991 \n", "657197 BUY DOWN 2026-04-02 19:15:04.999 \n", "\n", "[80 rows x 8 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_clob.loc[(df_clob['timestamp_arrival']>1775157300*1000)&(df_clob['timestamp_arrival']<1775157305*1000)]" ] }, { "cell_type": "code", "execution_count": null, "id": "e7aa7cfd", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "9bc2cecb", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "734c2302", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "8a293522", "metadata": {}, "outputs": [], "source": [ "a" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "5ba7be5f", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "py_313", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.12" } }, "nbformat": 4, "nbformat_minor": 5 }