수정 중인 문서입니다.
참고
- 쿼리는 sqlalchemy.orm.Session.execute으로 가져온다.
- 예시 코드에서 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을 반환한다.
여러 개를 가져오는 경우
- all()
- scalars()
all()
- sqlalchemy.engine.row.Row의 리스트를 반환한다.
scalars()
- sqlalchemy.engine.ScalarResult를 반환한다.