#!/usr/bin/env python3 """添加 test_permission 表缺失的字段""" import asyncio from sqlalchemy.ext.asyncio import create_async_engine from sqlalchemy import text DB_CONFIG = { 'host': '123.57.81.127', 'port': 3306, 'user': 'cpy_admin', 'password': 'Tgzz2025+', 'database': 'ruoyi-fastapi' } DATABASE_URL = ( f"mysql+asyncmy://{DB_CONFIG['user']}:{DB_CONFIG['password']}@" f"{DB_CONFIG['host']}:{DB_CONFIG['port']}/{DB_CONFIG['database']}" ) async def add_fields(): engine = create_async_engine(DATABASE_URL, echo=False) async with engine.connect() as conn: print("=" * 80) print("Adding missing fields to test_permission") print("=" * 80) # 检查现有字段 result = await conn.execute(text("DESCRIBE test_permission")) columns = result.fetchall() column_names = [col[0] for col in columns] print(f"\n[1] Existing columns: {', '.join(column_names)}") # 添加 can_claim 字段 if 'can_claim' not in column_names: print("\n[2] Adding can_claim column...") await conn.execute(text(""" ALTER TABLE test_permission ADD COLUMN can_claim TINYINT(1) DEFAULT 1 COMMENT '是否可领取: 0=否, 1=是' AFTER test_item_id """)) await conn.commit() print(" [OK] can_claim added") else: print("\n[2] can_claim already exists") # 添加 del_flag 字段 if 'del_flag' not in column_names: print("\n[3] Adding del_flag column...") await conn.execute(text(""" ALTER TABLE test_permission ADD COLUMN del_flag VARCHAR(1) DEFAULT '0' COMMENT '删除标志: 0=正常, 1=已删除' AFTER is_active """)) await conn.commit() print(" [OK] del_flag added") else: print("\n[3] del_flag already exists") # 验证 print("\n[4] Verification:") result = await conn.execute(text("DESCRIBE test_permission")) columns = result.fetchall() for col in columns: print(f" {col[0]:<20} | {col[1]:<30}") print("\n" + "=" * 80) await engine.dispose() if __name__ == '__main__': asyncio.run(add_fields())