FA3-Datafetch/backend/app/database.py
xucheng f2697149f7 优化 Docker 部署和修复 Markdown 渲染
- 修复 AI 讨论框 Markdown 粗体渲染问题
- 增加数据库连接池到 50 最大并发连接
- 移除 Google Fonts 依赖,使用系统默认字体
- 添加 Docker DNS 配置支持多服务器访问
- 优化 Dockerfile 构建流程,直接复制 node_modules
- 添加 mTLS 证书文件
2026-01-14 22:12:14 +08:00

38 lines
1.1 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.

"""
数据库连接配置 (新架构)
使用 AsyncSession 支持异步操作
"""
import os
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
from sqlalchemy.orm import declarative_base
from dotenv import load_dotenv
load_dotenv()
# 数据库连接 URL
DATABASE_URL = f"postgresql+asyncpg://{os.getenv('DB_USER')}:{os.getenv('DB_PASSWORD')}@{os.getenv('DB_HOST')}:{os.getenv('DB_PORT')}/{os.getenv('DB_NAME')}"
# 创建异步引擎
engine = create_async_engine(
DATABASE_URL,
echo=False, # 设置为 True 可以看到 SQL 日志
future=True,
pool_size=20, # 核心连接池大小
max_overflow=30, # 溢出连接池大小
pool_timeout=30, # 获取连接的超时时间(秒)
pool_recycle=3600 # 连接回收时间1小时防止长时间闲置连接被数据库关闭
)
# 创建异步 Session 工厂
SessionLocal = async_sessionmaker(
engine,
class_=AsyncSession,
expire_on_commit=False
)
# Dependency
async def get_db():
"""获取数据库会话"""
async with SessionLocal() as session:
yield session