【发布时间】:2017-11-14 20:57:14
【问题描述】:
我有一个表格,其中包含一些有关用户的数据。 like 和 smile 有两个字段。我需要从表中获取数据,按user_id 分组,这将显示用户是否喜欢或微笑。我用 SQL 编写的查询如下所示:
select sum(smile) > 0 as has_smile,
sum(like) > 0 as has_like,
user_id
from ratings
group by user_id.
这将提供如下输出:
| has_smile | has_like | user_id |
+-----------+----------+---------+
| 1 | 0 | 1 |
| 1 | 1 | 2 |
这个查询有没有可能被翻译成 SQLAlchemy(准确地说是 Flask-SQLAlchemy)?我知道有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。
【问题讨论】:
标签: python sqlalchemy flask-sqlalchemy