如何使用sqlalchemy关闭Postgresql上的会话?

0tdrvxhp  于 5个月前  发布在  PostgreSQL
关注(0)|答案(1)|浏览(76)

在该配置中

from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine, async_sessionmaker

db_engine = create_async_engine('<DATABASE_URL>', echo=False, future=True)
async_session = async_sessionmaker(db_engine, class_=AsyncSession, expire_on_commit=False)

async def get_session() -> AsyncSession:
    async with async_session() as session:
        yield session
        await session.close()

字符串
我可以连接到Postgresql数据库,但有几个连接保持打开。这是一个问题吗?我如何修复它?

cetgtptt

cetgtptt1#

由于您正在使用连接池来获取会话,因此SQLAlchemy将保持一些连接打开,以便您可以重用它们,而无需等待建立新的连接。
默认情况下,这个数字是5,但您可以通过将pool_size参数传递给async_sessionmaker来更改它。
https://docs.sqlalchemy.org/en/20/core/pooling.html
顺便说一句,你不必调用session.close(),因为你使用的是上下文管理器,当你从with退出时,它会为你做这件事

相关问题