2023-09-23 08:52:12

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을 반환.