From 449ad01ede0c36a4d2d8b93a409c7934b3ea3209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=87=E8=96=87=E5=AE=89?= Date: Tue, 3 Feb 2026 09:49:25 +0800 Subject: [PATCH] a --- backend/database/add_realized_pnl_columns.sql | 4 +++ backend/stop.sh | 23 ++++++++++++ check_db.py | 35 +++++++++++++++++++ update_db_schema.py | 32 +++++++++++++++++ 4 files changed, 94 insertions(+) create mode 100644 backend/database/add_realized_pnl_columns.sql create mode 100644 backend/stop.sh create mode 100644 check_db.py create mode 100644 update_db_schema.py diff --git a/backend/database/add_realized_pnl_columns.sql b/backend/database/add_realized_pnl_columns.sql new file mode 100644 index 0000000..d97f326 --- /dev/null +++ b/backend/database/add_realized_pnl_columns.sql @@ -0,0 +1,4 @@ + +ALTER TABLE trades ADD COLUMN IF NOT EXISTS realized_pnl DECIMAL(20, 8) DEFAULT NULL COMMENT '币安实际结算盈亏(包含资金费率等)'; +ALTER TABLE trades ADD COLUMN IF NOT EXISTS commission DECIMAL(20, 8) DEFAULT NULL COMMENT '交易手续费(USDT计价)'; +ALTER TABLE trades ADD COLUMN IF NOT EXISTS commission_asset VARCHAR(10) DEFAULT NULL COMMENT '手续费币种(BNB/USDT)'; diff --git a/backend/stop.sh b/backend/stop.sh new file mode 100644 index 0000000..1603140 --- /dev/null +++ b/backend/stop.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# 停止后端服务脚本 + +cd "$(dirname "$0")" + +# 查找运行中的uvicorn进程 +PID=$(ps aux | grep "uvicorn api.main:app" | grep -v grep | awk '{print $2}') + +if [ -z "$PID" ]; then + echo "未找到运行中的后端服务" +else + echo "找到运行中的后端服务,PID: $PID" + echo "正在停止服务..." + kill $PID + sleep 1 + + # 检查是否成功停止 + if ps -p $PID > /dev/null 2>&1; then + echo "停止失败,尝试强制停止..." + kill -9 $PID + fi + echo "后端服务已停止" +fi diff --git a/check_db.py b/check_db.py new file mode 100644 index 0000000..4c0911b --- /dev/null +++ b/check_db.py @@ -0,0 +1,35 @@ + +import os +import sys +import pymysql +from pathlib import Path +from dotenv import load_dotenv + +# Load env +backend_dir = Path(__file__).parent / 'backend' +load_dotenv(backend_dir / '.env', override=True) + +host = os.getenv('DB_HOST', 'localhost') +port = int(os.getenv('DB_PORT', 3306)) +user = os.getenv('DB_USER', 'root') +password = os.getenv('DB_PASSWORD', '') + +print(f"Connecting to {host}:{port} as {user}") + +try: + conn = pymysql.connect( + host=host, + port=port, + user=user, + password=password, + charset='utf8mb4' + ) + cursor = conn.cursor() + cursor.execute("SHOW DATABASES") + dbs = cursor.fetchall() + print("Databases:") + for db in dbs: + print(db) + conn.close() +except Exception as e: + print(f"Error: {e}") diff --git a/update_db_schema.py b/update_db_schema.py new file mode 100644 index 0000000..2340869 --- /dev/null +++ b/update_db_schema.py @@ -0,0 +1,32 @@ + +import os +import sys + +# Add backend directory to path +sys.path.append(os.path.join(os.path.dirname(__file__), 'backend')) + +from database.connection import db + +def run_migration(): + print("Running migration to add realized_pnl and commission columns...") + + sqls = [ + "ALTER TABLE trades ADD COLUMN realized_pnl DECIMAL(20, 8) DEFAULT NULL COMMENT '币安实际结算盈亏(包含资金费率等)'", + "ALTER TABLE trades ADD COLUMN commission DECIMAL(20, 8) DEFAULT NULL COMMENT '交易手续费(USDT计价)'", + "ALTER TABLE trades ADD COLUMN commission_asset VARCHAR(10) DEFAULT NULL COMMENT '手续费币种(BNB/USDT)'" + ] + + for sql in sqls: + try: + print(f"Executing: {sql}") + db.execute_update(sql) + print("Success.") + except Exception as e: + print(f"Error executing SQL: {e}") + # Ignore duplicate column errors if IF NOT EXISTS fails for some reason + pass + + print("Migration completed.") + +if __name__ == "__main__": + run_migration()