调整代码,支持项目切换,打开不同数据库的连接

This commit is contained in:
2026-02-11 10:42:40 +08:00
parent a472639b8a
commit eb45e4aaa5
5 changed files with 60 additions and 6 deletions

View File

@@ -1,6 +1,7 @@
from fastapi import APIRouter, Depends, HTTPException, Query
from fastapi import APIRouter, Depends, HTTPException, Query, Body
from typing import Optional
from psycopg import AsyncConnection
from pydantic import BaseModel
from .database import get_database_instance
from .scada_info import ScadaRepository
@@ -9,6 +10,10 @@ from .scheme import SchemeRepository
router = APIRouter()
class DatabaseConfig(BaseModel):
db_name: str
# 创建支持数据库选择的连接依赖函数
async def get_database_connection(
db_name: Optional[str] = Query(
@@ -21,6 +26,26 @@ async def get_database_connection(
yield conn
@router.post("/postgres/open-database")
async def open_database(config: DatabaseConfig):
"""
尝试连接指定数据库,如果成功则返回成功消息
"""
try:
instance = await get_database_instance(config.db_name)
# 尝试获取连接并执行简单查询以验证连接
async with instance.get_connection() as conn:
async with conn.cursor() as cur:
await cur.execute("SELECT 1")
await cur.fetchone()
return {"success": True, "message": f"Successfully connected to database: {config.db_name}"}
except Exception as e:
raise HTTPException(
status_code=500, detail=f"Failed to connect to database {config.db_name}: {str(e)}"
)
@router.get("/scada-info")
async def get_scada_info_with_connection(
conn: AsyncConnection = Depends(get_database_connection),