feat: initial commit and ignore qwen files

This commit is contained in:
dxc
2026-04-30 10:06:32 +08:00
commit def4f7d71f
55 changed files with 5252 additions and 0 deletions

67
backend/app/database.py Normal file
View File

@ -0,0 +1,67 @@
"""数据库连接与会话管理模块"""
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base
from app.config import settings
# 处理兼容:如果设置了 DATABASE_URL单数据库模式则两个都使用它
if settings.DATABASE_URL:
inventory_url = settings.DATABASE_URL
pms_url = settings.DATABASE_URL
else:
inventory_url = settings.DATABASE_URL_INVENTORY
pms_url = settings.DATABASE_URL_PMS
# ============ 库存数据库(只读)============
engine_inventory = create_engine(
inventory_url,
pool_pre_ping=True,
pool_size=5,
max_overflow=10,
# 库存数据库只读,不需要写入优化
)
SessionLocalInventory = sessionmaker(autocommit=False, autoflush=False, bind=engine_inventory)
def get_db_inventory():
"""获取库存数据库会话的依赖函数(只读)"""
db = SessionLocalInventory()
try:
yield db
finally:
db.close()
# ============ PMS 数据库(可读写)============
engine_pms = create_engine(
pms_url,
pool_pre_ping=True,
pool_size=10,
max_overflow=20,
)
SessionLocalPMS = sessionmaker(autocommit=False, autoflush=False, bind=engine_pms)
def get_db_pms():
"""获取 PMS 数据库会话的依赖函数(可读写)"""
db = SessionLocalPMS()
try:
yield db
finally:
db.close()
# ============ 兼容旧接口 ============
# 为向后兼容提供默认的 engine 和 SessionLocal
engine = engine_pms
SessionLocal = SessionLocalPMS
Base = declarative_base()
def get_db():
"""获取数据库会话的依赖函数(兼容旧接口,默认使用 PMS 数据库)"""
yield from get_db_pms()