ST/server/main.py
2024-08-26 08:05:26 +00:00

63 lines
1.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from .addons.base.models.configparser import Config
from .addons.base.models.configparser import DATABASE_URL
import psycopg2
from psycopg2 import sql
from fastapi.responses import JSONResponse
import logging
from fastapi.middleware.cors import CORSMiddleware
origins = [
"*",
]
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"], # 允许所有 HTTP 方法
allow_headers=["*"], # 允许所有头部
)
config = Config()
def get_databases():
conn = None
try:
# 连接到默认的PostgreSQL数据库通常为postgres
conn = psycopg2.connect(DATABASE_URL) # 使用DATABASE_URL连接
conn.autocommit = True # 设置自动提交模式
cursor = conn.cursor()
# 查询所有数据库排除postgres
cursor.execute(sql.SQL("SELECT datname FROM pg_database WHERE datistemplate = false AND datname != 'postgres';"))
databases = [row[0] for row in cursor.fetchall()]
logger.info("获取已有数据库列表: %s", databases)
return databases
except Exception as e:
logger.error("Error getting databases: %s", e)
return []
finally:
if conn is not None:
conn.close()
@app.get("/", response_class=JSONResponse)
async def get_databases_route():
databases = get_databases()
return databases
from .addons.base.models import database
app.include_router(database.router, prefix="/web/database", tags=["数据库"])
if __name__ == '__main__':
try:
server_port = config.getint('options', 'http_port')
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=server_port)
except Exception as e:
print(f"Failed to start the server: {e}")