[SQLAlchemy] ORM 모델 sum 함수 쓰기

happypath·2021년 11월 18일
0

SQL

목록 보기
2/6

SQLAlchemy ORM 모델로 디비를 사용하던 중, 특정 컬럼 값의 총합(SUM)이 필요했다.


from sqlalchemy.sql import func

count = db.session.query(db.func.sum(Books.stock)).first()[0]

1. func사용 시 Books.query로 사용하면 안됨(에러 발생)

Model.query는 db.session.query(Model)의 바로 가기이며 호출 할 수 없습니다. 모델을 쿼리하지 않는 경우 일반 SQLAlchemy와 마찬가지로 db.session.query(...)를 계속 사용하십시오.
참고답변

2. 반환 값은 'basequery object'

쿼리 실행 시, 리턴 값은 'basequery object'라는 객체인 것 같다. (Decimal('33'),) 아래와 같이 리턴됨.

내가 원하는건 '33'이라는 값이기에,

db.session.query(db.func.sum(Books.stock)).first()

이 아닌, 아래와 같이 인덱스로 접근해 주어야 한다.

db.session.query(db.func.sum(Books.stock)).first()[0]

0개의 댓글