92 lines
3.3 KiB
Python
92 lines
3.3 KiB
Python
|
|
#!/usr/bin/env python3
|
||
|
|
"""分析测试类别结构"""
|
||
|
|
|
||
|
|
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 analyze_test_category():
|
||
|
|
engine = create_async_engine(DATABASE_URL, echo=False)
|
||
|
|
|
||
|
|
async with engine.connect() as conn:
|
||
|
|
print("=" * 80)
|
||
|
|
print("Test Category Structure Analysis")
|
||
|
|
print("=" * 80)
|
||
|
|
|
||
|
|
# 1. 检查 test_category 表结构
|
||
|
|
print("\n[1] test_category table structure:")
|
||
|
|
result = await conn.execute(text("DESCRIBE test_category"))
|
||
|
|
rows = result.fetchall()
|
||
|
|
for row in rows:
|
||
|
|
print(f" {row[0]:<20} | {row[1]:<20} | {row[2]:<10} | {row[3]}")
|
||
|
|
|
||
|
|
# 2. 检查现有测试类别数据
|
||
|
|
print("\n[2] Current test_category data:")
|
||
|
|
result = await conn.execute(text("""
|
||
|
|
SELECT id, name, parent_id, level, category_code, sort_order, report_config_type
|
||
|
|
FROM test_category
|
||
|
|
ORDER BY parent_id, sort_order
|
||
|
|
"""))
|
||
|
|
rows = result.fetchall()
|
||
|
|
for row in rows:
|
||
|
|
parent_str = f"Parent:{row[2]}" if row[2] else "Root"
|
||
|
|
print(f" ID:{row[0]:<3} | {row[1]:<15} | {parent_str:<12} | Level:{row[3]} | Code:{row[4]} | Sort:{row[5]} | ReportType:{row[6]}")
|
||
|
|
|
||
|
|
# 3. 检查 test_item 表结构
|
||
|
|
print("\n[3] test_item table structure:")
|
||
|
|
result = await conn.execute(text("DESCRIBE test_item"))
|
||
|
|
rows = result.fetchall()
|
||
|
|
for row in rows:
|
||
|
|
print(f" {row[0]:<20} | {row[1]:<20} | {row[2]:<10} | {row[3]}")
|
||
|
|
|
||
|
|
# 4. 检查现有测试单元数据
|
||
|
|
print("\n[4] Current test_item data:")
|
||
|
|
result = await conn.execute(text("""
|
||
|
|
SELECT id, name, test_category_id, eut_type_id
|
||
|
|
FROM test_item
|
||
|
|
ORDER BY test_category_id
|
||
|
|
"""))
|
||
|
|
rows = result.fetchall()
|
||
|
|
for row in rows:
|
||
|
|
print(f" ID:{row[0]:<3} | {row[1]:<15} | CategoryID:{row[2]} | EutTypeID:{row[3]}")
|
||
|
|
|
||
|
|
# 5. 检查 test_category_detail 表
|
||
|
|
print("\n[5] test_category_detail table structure:")
|
||
|
|
result = await conn.execute(text("DESCRIBE test_category_detail"))
|
||
|
|
rows = result.fetchall()
|
||
|
|
for row in rows:
|
||
|
|
print(f" {row[0]:<20} | {row[1]:<20} | {row[2]:<10} | {row[3]}")
|
||
|
|
|
||
|
|
# 6. 检查 test_category_detail 数据
|
||
|
|
print("\n[6] Current test_category_detail data:")
|
||
|
|
result = await conn.execute(text("""
|
||
|
|
SELECT id, test_category_id, detail_type, detail_name, detail_value
|
||
|
|
FROM test_category_detail
|
||
|
|
ORDER BY test_category_id, detail_type
|
||
|
|
"""))
|
||
|
|
rows = result.fetchall()
|
||
|
|
for row in rows:
|
||
|
|
print(f" ID:{row[0]:<3} | CategoryID:{row[1]} | Type:{row[2]:<15} | Name:{row[3]:<15} | Value:{row[4]}")
|
||
|
|
|
||
|
|
print("\n" + "=" * 80)
|
||
|
|
print("Analysis Complete")
|
||
|
|
print("=" * 80)
|
||
|
|
|
||
|
|
await engine.dispose()
|
||
|
|
|
||
|
|
if __name__ == '__main__':
|
||
|
|
asyncio.run(analyze_test_category())
|