본문 바로가기
Python

Python - SQLAlchemy 검색 결과 (exists/ not exists)있는지/없는지 확인

by 올엠 2024. 2. 19.
반응형
from sqlalchemy import exists

query = session.query(User).filter(User.name == "John Doe")

if query:
    # 검색 결과가 있으면실행
    print("검색 결과가 있습니다.") 

if not query:
    # 검색 결과가 없으면 실행
    print("검색 결과가 없습니다.")

다음은 SQLAlchemy에서 검색 결과가 있는지 혹은 없는지에 따라서 처리해야 하는 상황에 사용하는 방법 몇가지를 여기에 정리해 본다.

 

1. first() 또는 one() 메서드 사용

first() 또는 one() 메서드는 쿼리 결과의 첫 번째 행을 가져옵니다. 결과가 없으면 예외를 발생시킵니다. 다음과 같이 사용할 수 있습니다.

from sqlalchemy.orm import exc

try:
    user = query.first()
except exc.NoResultFound:
    # 검색 결과가 없으면 실행
    print("검색 결과가 없습니다.")

2. scalar() 메서드 사용

scalar() 메서드는 쿼리 결과의 첫 번째 열을 가져옵니다. 결과가 없으면 None을 반환한다. 다음과 같이 사용할 수 있다.

user_id = query.scalar()

if user_id is None:
    # 검색 결과가 없으면 실행
    print("검색 결과가 없습니다.")

3. exists() 쿼리 사용

exists() 쿼리는 쿼리 결과에 행이 있는지 확인하는 Boolean 값을 반환한다. 다음과 같이 사용할 수 있다.

from sqlalchemy import exists

query = exists(session.query(User).filter(User.name == "John Doe"))

if not query:
    # 검색 결과가 없으면 실행
    print("검색 결과가 없습니다.")

5. count() 쿼리 사용

count() 쿼리는 쿼리 결과의 행 수를 반환합니다. 다음과 같이 사용할 수 있다.

user_count = session.query(User).filter(User.name == "John Doe").count()

if user_count == 0:
    # 검색 결과가 없으면 실행
    print("검색 결과가 없습니다.")

위 코드 중 하나를 사용하여 SQLAlchemy에서 검색 결과가 없을 때 처리할 수 있다.

반응형