one(), one_or_none(), first()는 SQLAlchemy을 사용하여 Query 객체로 데이터를 조회할 때 많이 사용하게 되는 메서드들입니다. 이 친구들은 정확한 사용법을 모르고 사용하면 에러를 야기할 수 있는 친구들이기 때문에 잘 알고 사용해야 합니다. 하나씩 어떤 상황에 사용해야 하는지 살펴보겠습니다.
one() 메서드
one() 메서드는 SQL 쿼리를 실행한 결과에서 한 개의 레코드(행)를 반환합니다. 결과가 정확히 하나의 레코드만 있어야 합니다. 그렇지 않으면 MultipleResultsFound 예외가 발생합니다.
one_or_none() 메서드
one_or_none() 메서드는 one()과 비슷하지만, 조회 결과가 없을 때 예외를 발생시키는 대신 None을 반환합니다. 따라서 결과가 없거나 하나의 레코드만 예상되는 상황에 사용하는 것이 좋습니다.
first() 메서드
first() 메서드는 SQL 쿼리를 실행한 결과에서 첫 번째 행을 반환합니다. 그리고 조회 결과가 없을 경우에는 None을 반환합니다. 여러 개 행이 조회될 수 있는 상황이고 그 중 첫번째 행이 필요한 경우라면 first() 메서드를 사용하면 됩니다.
정리하며
- one(): 정확히 하나의 행을 반환하며, 조회 결과가 없거나 여러 개인 경우 예외 발생
- one_or_none(): 하나의 행을 반환하거나 조회 결과가 없는 경우 None을 반환
- first(): 첫 번째 행을 반환하며, 조회 결과가 없는 경우 None을 반환.
'Dev > python' 카테고리의 다른 글
[python] 한줄로 if, else문 만들기 (삼항연산자) (0) | 2023.09.28 |
---|---|
[python] 타입 체크시에는 type() 대신에 isinstance()를 활용하라 (0) | 2023.09.27 |
[python] redis.Redis()와 redis.StrictRedis()의 차이는? (0) | 2023.09.26 |
[pandas] 데이터프레임에서 NaN을 None으로 치환하기, replace(), np.nan 활용 (0) | 2023.09.24 |
[FastAPI] uvicorn의 workers 설정 의미 (0) | 2023.09.08 |
[sqlalchemy] pool_size, max_overflow 이해 (0) | 2023.09.07 |
[pandas] 데이터프레임 딕셔너리로 변환하기, df.to_dict('records') (0) | 2023.09.07 |
[python] 딕셔너리 키-값 쌍 삭제하기, pop() 메서드 (0) | 2023.09.04 |