Skip to content

数据库连接问题 #35

@Gscsd8527

Description

@Gscsd8527

为什么你在每次访问数据库的时候都需要重新连接,我并没有看到缓存的信息,我是这样写的,我这样写会有什么问题吗?
@lru_cache
def get_async_engine():
return create_async_engine(
SQLALCHEMY_ASYNC_DATABASE_URL,
echo=False,
pool_pre_ping=True,
future=True,
max_overflow=DataBaseConfig.DB_MAX_OVERFLOW,
pool_size=DataBaseConfig.DB_POOL_SIZE,
pool_recycle=DataBaseConfig.DB_RECYCLE,
pool_timeout=DataBaseConfig.DB_POOL_TIMEOUT,
)

@lru_cache
def get_session_factory():
return async_sessionmaker(
autocommit=False,
bind=get_async_engine(),
expire_on_commit=False,
autoflush=False,
class_=AsyncSession
)

获取mysql句柄

async def session_getter() -> AsyncGenerator[AsyncSession, None]:
session_factory = get_session_factory()
async with session_factory() as session: # 调用工厂生成会话
async with session.begin():
yield session

路由

@router.get('', summary="banner", description="banner")
async def banner(
session: AsyncSession = Depends(session_getter)
):
data = await BannerService.banner_list(session)
return SuccessResponse(data)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions