ETest-Vue-FastAPI/add_test_permission_fields.py

72 lines
2.3 KiB
Python
Raw Permalink Normal View History

2026-03-30 10:38:36 +08:00
#!/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())