2017-11-14 9 views
0

사용자에 대한 데이터가 들어있는 테이블이 있습니다. 거기에 두 개의 필드가 likesmile입니다. 테이블에서 데이터를 가져와야합니다. 사용자가 좋아하거나 웃으면 표시되는 user_id으로 그룹화됩니다.플라스크 SQLAlchemy 합계 함수 비교

| has_smile | has_like | user_id | 
+-----------+----------+---------+ 
|   1 |  0 |  1 | 
|   1 |  1 |  2 | 

(정확하게 플라스크-SQLAlchemy의)이 쿼리 SQLAlchemy의로 번역 할 수있는 기회가 :

select sum(smile) > 0 as has_smile, 
     sum(like) > 0 as has_like, 
     user_id 
from ratings 
group by user_id. 

이 같은 출력을 제공 할 것이다 : 나는 SQL에서 작성합니다 쿼리처럼 보인다? 내가 거기에 db.func.sum 알아하지만 거기에 비교를 추가하고 레이블을 가지고 어떻게 해야할지 모르겠다.

cls.query.with_entities("user_id").group_by(user_id).\ 
    add_columns(db.func.sum(cls.smile).label("has_smile"), 
       db.func.sum(cls.like).label("has_like")).all() 

하지만이 나처럼 /이 미소되지 않은 경우 미소의 정확한 수는/대신 1/0의 좋아 반환합니다 내가 지금 한 일은이다. 당신이 비교 당신이 일반적으로 파이썬에서 무엇을 사용하고있는 방법을 할 거라고 연산자 오버로딩에

답변

2

감사 :

: 당신이 다음에 레이블을 제공 할 수있는 SQL 표현 객체를 생성

db.func.sum(cls.smile) > 0 

(db.func.sum(cls.smile) > 0).label('has_smile') 
+0

감사합니다. 먼저 작성했지만 IDE에서 잘못 표시 했으므로 시도하지 않았습니다./모두 잘 작동합니다. – PerunSS