[파이썬] SQLAlchemy 필터링 및 정렬

SQLAlchemy는 Python에서 사용하는 강력하고 유연한 ORM(Object-Relational Mapping) 라이브러리입니다. ORM을 사용하면 데이터베이스와 상호작용하기 위해 SQL 문법을 직접 사용하지 않고도 Python 코드로 데이터베이스 작업을 처리할 수 있습니다. SQLAlchemy는 데이터베이스 쿼리를 생성하고 실행하는 다양한 기능을 제공하는데, 이 중에서 필터링과 정렬에 대한 기능에 대해 알아보겠습니다.

필터링

데이터베이스에서 특정 조건을 가진 레코드를 검색하기 위해서는 필터링 기능이 필요합니다. SQLAlchemy에서는 filter() 메서드를 사용하여 필터링을 수행할 수 있습니다. 예를 들어, User 모델에서 나이가 30 이상인 사용자를 검색하는 코드는 다음과 같습니다.

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from your_project.models import User

engine = create_engine('sqlite:///your_database.db')
Session = sessionmaker(bind=engine)
session = Session()

users = session.query(User).filter(User.age >= 30).all()
for user in users:
    print(user.name)

위의 예제에서 filter() 메서드의 인자로 User.age >= 30과 같은 조건을 전달하여 나이가 30 이상인 사용자를 필터링했습니다. all() 메서드를 사용하여 검색 결과를 리스트로 가져올 수 있습니다.

정렬

SQLAlchemy에서는 order_by() 메서드를 사용하여 검색 결과를 원하는 기준으로 정렬할 수 있습니다. order_by() 메서드의 인자로 정렬 기준을 전달합니다. 예를 들어, User 모델에서 나이가 많은 순으로 사용자를 정렬하는 코드는 다음과 같습니다.

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from your_project.models import User

engine = create_engine('sqlite:///your_database.db')
Session = sessionmaker(bind=engine)
session = Session()

users = session.query(User).order_by(User.age.desc()).all()
for user in users:
    print(user.name)

위의 예제에서 order_by() 메서드의 인자로 User.age.desc()와 같이 정렬 기준을 전달하여 나이가 많은 순으로 사용자를 정렬했습니다. desc() 메서드를 사용하여 내림차순 정렬을 지정할 수 있습니다. 오름차순으로 정렬하려면 asc() 메서드를 사용하면 됩니다.

SQLAlchemy를 사용하면 필터링과 정렬을 손쉽게 처리할 수 있습니다. 위의 예제 코드를 참고하여 SQLAlchemy를 활용하여 데이터베이스 작업을 보다 효율적으로 처리해 보세요.