customs-data / packages /core /database.py
3v324v23's picture
chore: change DB to SQLite for Hugging Face Space deployment
b643537
Raw
History Blame Contribute Delete
876 Bytes
from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker, AsyncSession
from sqlalchemy.orm import declarative_base
from packages.core.config import settings
# 创建异步数据库引擎
engine_kwargs = {
"echo": False,
"future": True,
}
if not settings.DATABASE_URL.startswith("sqlite"):
engine_kwargs["pool_size"] = 20
engine_kwargs["max_overflow"] = 10
engine = create_async_engine(
settings.DATABASE_URL,
**engine_kwargs
)
# 创建异步 Session 工厂
AsyncSessionLocal = async_sessionmaker(
bind=engine,
class_=AsyncSession,
expire_on_commit=False,
autoflush=False
)
# ORM 基类
Base = declarative_base()
# 数据库会话依赖注入函数
async def get_db_session():
async with AsyncSessionLocal() as session:
try:
yield session
finally:
await session.close()