[파이썬] aiohttp 비동기 ORM 연동하기

비동기 웹 프레임워크인 aiohttp와 ORM(Object-Relational Mapping) 라이브러리를 연동하여 데이터베이스 작업을 수행하는 방법을 알아보겠습니다.

1. ORM 라이브러리 선택 및 설치

여러 ORM 라이브러리 중에서 SQLAlchemy ORM을 선택하고 설치해야 합니다. 다음 명령어를 사용하여 SQLAlchemy를 설치하세요.

pip install sqlalchemy

2. 데이터베이스 연결 설정

SQLAlchemy ORM을 사용하여 데이터베이스에 연결하기 위해서는 연결 정보를 설정해야 합니다. 다음과 같이 데이터베이스 URL을 설정하는 코드를 작성하세요.

from sqlalchemy import create_engine

db_url = "Your database URL"
engine = create_engine(db_url)

3. 모델 정의

ORM을 사용하면 데이터베이스 테이블과 연관된 모델 클래스를 정의할 수 있습니다. 다음은 User 모델 클래스의 예입니다.

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(50))

4. 비동기 ORM 연동 설정

비동기 웹 프레임워크인 aiohttp와 SQLAlchemy ORM을 연동하기 위해서는 AsyncSession을 사용해야 합니다. 다음과 같이 비동기 연결 기능을 포함한 SQLAlchemy 세션을 생성합니다.

from sqlalchemy.orm import sessionmaker, scoped_session

async_session = scoped_session(sessionmaker(bind=engine, class_=AsyncSession, expire_on_commit=False))

5. 데이터베이스 작업 수행하기

위에서 정의한 User 모델을 사용하여 데이터베이스 작업을 수행할 수 있습니다.

데이터 조회

async with async_session() as session:
    result = await session.execute(select(User))
    users = result.all()
    for user in users:
        print(user.name)

데이터 추가

async with async_session() as session:
    user = User(name='John')
    session.add(user)
    await session.commit()

마무리

이제 aiohttp와 SQLAlchemy ORM을 연동하여 데이터베이스 작업을 비동기로 처리할 수 있게 되었습니다. 위의 예제 코드를 참고하여 웹 애플리케이션 개발에 유용하게 활용해 보세요.