상황
SqlAlchemy에서 count 한 것을 비교해서 having에 넣어 준 후 결과값을 받으려고 한다.
따로 aliased를 사용하지 않고, 그냥 바로 .label() 한 column 명을 넣고 싶은데 그냥 값을 넣어도 계속해서 에러가 뜨는 상황
해결방법
.literal_column을 사용하면, label한 값도 filter, having, order에서 사용할 수 있다.
평소에는 text()를 이용하면 잘 되지만, 부등호나 사칙연산이 필요할 경우 무조건 .literal_column()을 써줘야 한다.
아니면 그냥 aliased로 지정해서 바로 변수처럼 써도 된다
코드
test = db.session.query(
func.count(Association.seller_id).label('use_count'),
CommonCode.code_value.label('limit_count')
).select_from(Counselor) \
.group_by(Counselor.id) \
.having(literal_column('membership_use_count') < literal_column('membership_limit_count'))
참고
https://stackoverflow.com/questions/51793704/sqlalchemy-reference-label-in-having-clause
SQLAlchemy reference label in Having clause
We have a query that we need to use as part of a select, and also in the having clause. The problem is that the resulting SQL expands the query in both places when I would expect to not expand it i...
stackoverflow.com
https://stackoverflow.com/questions/30313872/using-a-label-in-a-having-clause-in-sqlachemy
Using a label in a having clause in sqlachemy
I'm trying to use a label in a having clause with sqlalchemy, but I'm having problems getting it working. I'm trying something like this: qry = db.session.query( Foo.id, Foo.name...
stackoverflow.com
'개발합시다. > BackEnd 공부' 카테고리의 다른 글
[SQL] 원하는 순서대로 새로운 정렬 규칙 만들기 (0) | 2022.12.21 |
---|---|
[SQL] 여러 값을 한개로 합칠때 (group_concat) (0) | 2022.09.26 |
Django의 Session관리 (Redis 활용) (0) | 2021.12.15 |
Spring Boot 실습기록 2 (0) | 2021.12.08 |
Django의 request & Http (0) | 2021.12.08 |