diff --git a/routes/database.py b/routes/database.py index ab8eeda..81ceaf7 100644 --- a/routes/database.py +++ b/routes/database.py @@ -63,6 +63,8 @@ class ExecuteSQLResponse(BaseModel): success: bool rows_affected: Optional[int] = None message: str + columns: Optional[list[str]] = None + data: Optional[list[list]] = None error: Optional[str] = None @@ -197,13 +199,24 @@ async def execute_sql(request: ExecuteSQLRequest, authorization: Optional[str] = await cursor.execute(request.sql) rows_affected = cursor.rowcount + # 获取列名 + columns = None + data = None + if cursor.description: + columns = [desc.name for desc in cursor.description] + # 获取所有行数据 + rows = await cursor.fetchall() + data = [list(row) for row in rows] + if request.autocommit: await conn.commit() return ExecuteSQLResponse( success=True, rows_affected=rows_affected, - message=f"SQL 执行成功,影响行数: {rows_affected}" + message=f"SQL 执行成功,影响行数: {rows_affected}, 返回数据: {len(data) if data else 0} 行", + columns=columns, + data=data ) except HTTPException: