SQLAlchemy1.4로 비동기 연결용 세션 만들기

PostgreSQL에 연결된 예는 다음과 같습니다.

필요한 모듈 가져오기


from sqlalchemy.orm import sessionmaker # 同期接続の時の同じようにsessionmakerをインポート
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
create_engine 대신async_engine 가져오기.
비동기식 연결에 사용할 클래스, AsyncSession을 가져옵니다.

세션 만들기


// asyncpgなりpsycopg2なり
async_db = f"postgresql+asyncpg://{USER}:{PASSWORD}@{HOST}:{PORT}/{DB_NAME}"

async_engine = create_async_engine(async_db)
async_session = sessionmaker(
    bind=async_engine,
    class_=AsyncSession,
    autocommit=False,
    autoflush=False,
)
sessionmaker의 구조기를 보면 기본class이orm.session.Session이 지정되었으므로 AsyncSession을 사용합니다.
https://github.com/sqlalchemy/sqlalchemy/blob/main/lib/sqlalchemy/orm/session.py

그리고


async with async_session() as session:
context 관리자에게서session을 받아서 사용합니다.

단지 참고로 제공하다


예외일 때의 후처리를 asynccontext 관리자로 쓸 수도 있습니다.
https://docs.python.org/ja/3/library/contextlib.html#contextlib.asynccontextmanager

좋은 웹페이지 즐겨찾기