44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
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) |