from fastapi import APIRouter, Depends, Query from sqlalchemy.orm import Session from app.utils.database import get_db, DatabaseUtils from typing import Optional router = APIRouter(prefix="/database", tags=["数据库测试"]) @router.get("/test") async def test_database_connection(): """测试数据库连接""" return DatabaseUtils.test_connection() @router.get("/tables") async def list_all_tables(): """获取所有表名""" return DatabaseUtils.get_all_tables() @router.get("/query") async def execute_query( sql: str = Query(..., description="要执行的SQL查询语句"), limit: int = Query(100, description="返回记录数限制", ge=1, le=1000) ): """执行SQL查询""" return DatabaseUtils.execute_query(sql, limit) @router.get("/table/{table_name}") async def list_table_data( table_name: str, limit: int = Query(100, description="返回记录数限制", ge=1, le=1000) ): """查看指定表的数据""" sql = f"SELECT * FROM {table_name}" return DatabaseUtils.execute_query(sql, limit) @router.get("/table/{table_name}/structure") async def get_table_structure(table_name: str): """获取表结构""" sql = f"DESCRIBE {table_name}" return DatabaseUtils.execute_query(sql, 1000)