[sqlalchemy] 2.0 style query 결과 가져오기 총 정리 (한 개 또는 여러 개)

오도원공육사·2022년 11월 7일
0

sqlalchemy

목록 보기
1/1

수정 중인 문서입니다.

참고

  1. 쿼리는 sqlalchemy.orm.Session.execute으로 가져온다.
  2. 예시 코드에서 import 구문은 생략한다.
Base = declarative_base()

class Student(Base):
	id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

위와 같은 테이블이 있다고 하자. 이때 우리는 한 개 또는 여러 개의 데이터를 가져와야한다.

반환 타입

sqlalchemy의 반환 타입은 크게 두 가지가 존재한다.
1. sqlalchemy.engine.row.Row
- 튜플 형태의 결과 반환
2. sqlalchemy.engine.ScalarResult
- 스칼라 값을 리턴한다.
- row의 첫번째 원소이다.

한 개를 가져오는 경우

한 개의 데이터를 가져오는 경우는 3가지가 존재한다.
1. first()
2. one()
3. scalar()

first()

  • sqlalchemy.engine.row.Row 타입을 반환한다.
  • sql에서의 limit 1과 동일하다.
  • 여러 개일 경우 1개를 반환하고 없을 경우 None을 반환한다.

one()

  • sqlalchemy.engine.row.Row 타입을 반환한다.
  • 여러 개일 경우 sqlalchemy.orm.exc.MultipleResults 에러를 발생한다.
  • 없을 경우 sqlalchemy.orm.exc.NoResultFound 에러를 발생한다.

scalar()

  • sqlalchemy.engine.ScalarResult 타입을 반환한다.
  • 여러 개일 경우 sqlalchemy.orm.exc.MultipleResults 에러를 발생한다.
  • 없을 경우 None을 반환한다.

여러 개를 가져오는 경우

  1. all()
  2. scalars()

all()

  • sqlalchemy.engine.row.Row의 리스트를 반환한다.

scalars()

  • sqlalchemy.engine.ScalarResult를 반환한다.
profile
잘 먹고 잘살기

0개의 댓글