[Python] SQLAlchemy : ORM 쿼리 결과 부분 조회 처리(4)
[SQLAlchemy 활용 목차]
[Python] SQLAlchemy: ORM(Object Relational Mapping)
1. 객체 기반 데이터 활용 SQLAlchemy ORM 개요
2. ORM Filter로 조회 조건 활용
3. ORM filter와 filter_by 사용법 비교
4. ORM 쿼리 결과 부분 조회 처리
5. ORM을 이용한 테이블 조회 활용 예시
SQLAlchemy에서 쿼리의 결과를 가져오는 메서드로는 first(), one(), all() 등이 있습니다.
1. first() 메서드
first() 메서드는 쿼리의 첫 번째 결과를 반환하며, 결과가 없는 경우 None을 반환합니다. first() 메서드는 주로 결과가 하나일 때 사용합니다.
first_user = session.query(User).filter_by(name='John').first()
2. one() 메서드
one() 메서드는 쿼리의 결과가 정확히 하나일 때 사용합니다. 만약 결과가 하나가 아니거나 결과가 없을 경우에는 sqlalchemy.orm.exc.NoResultFound 혹은 sqlalchemy.orm.exc.MultipleResultsFound 예외가 발생합니다.
one_user = session.query(User).filter_by(id=1).one()
3. all() 메서드
all() 메서드는 쿼리의 결과를 모두 리스트 형태로 반환합니다.
all_users = session.query(User).all()
위 메서드들을 사용할 때, first()나 one()과 같은 단일 결과를 반환하는 메서드는 결과가 없거나 여러 개일 경우 예외가 발생할 수 있기 때문에 주의해야 합니다. 이러한 상황에서 예외를 처리하기 위해서는 try-except 구문을 사용하여 예외를 처리해주어야 합니다.
예외 처리
다음은 one() 메서드를 사용할 때, 결과가 없거나 여러 개일 경우 예외가 발생하는 상황입니다.
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
try:
one_user = session.query(User).filter_by(name='John').one()
except NoResultFound:
print("No user found.")
except MultipleResultsFound:
print("Multiple users found.")
위 예시에서는 one() 메서드를 사용하여 'name'이 'John'인 유저를 찾는데, 결과가 없는 경우 NoResultFound 예외가 발생하며, 결과가 여러 개인 경우 MultipleResultsFound 예외가 발생합니다. 이러한 예외를 처리하기 위해 try-except 구문을 사용하여 각각의 예외를 처리해주고 있습니다.
위와 같이 예외 처리를 해주면, 예외가 발생할 경우에도 프로그램이 멈추지 않고 예외 처리가 가능해집니다. 이러한 예외 처리는 데이터베이스에서 데이터를 가져오는 작업에서 매우 중요합니다.
[SQLAlchemy 활용 목차]
[Python] SQLAlchemy: ORM(Object Relational Mapping)
1. 객체 기반 데이터 활용 SQLAlchemy ORM 개요
2. ORM Filter로 조회 조건 활용
3. ORM filter와 filter_by 사용법 비교
4. ORM 쿼리 결과 부분 조회 처리
5. ORM을 이용한 테이블 조회 활용 예시
'Programming' 카테고리의 다른 글
[RUST언어] RUST 언어의 시작 (1) - RUST언어로 C/C++을 대체 할 수 있을까 ? (0) | 2023.04.29 |
---|---|
[python] Selenium 웹스크래핑 - 제목과 내용 수집하기 (2) | 2023.04.28 |
[Python] SQLAlchemy: ORM을 이용한 테이블 조회 활용 (5) - 응용 예시 (0) | 2023.04.11 |
[Python] SQLAlchemy : ORM filter와 filter_by 사용법 비교(3) - filter_by (0) | 2023.04.06 |
[Python] SQLAlchemy: ORM Filter로 조회 조건 활용(2) - filter (2) | 2023.04.06 |
[Python] SQLAlchemy: 객체 기반 데이터 활용 SQLAlchemy ORM (Object Relational Mapping)(1) (0) | 2023.04.05 |
인기있는 모바일 개발에 필요한 파이썬 개발툴 (0) | 2023.03.08 |