feat: initial commit and ignore qwen files
This commit is contained in:
67
backend/app/database.py
Normal file
67
backend/app/database.py
Normal 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()
|
||||
Reference in New Issue
Block a user