我希望获得文章列表以及每篇文章的评论数
我的查询是这样的-
comments_subq = meta.Session.query(func.count(Comment.id)).filter(Comment.article_id==Article.id).as_scalar()
articles = meta.Session.query(Article, comments_subq.label("comment_count"))
articles = articles.filter(column('comment_count') >= 5)
它给出了这个错误
column "comment_count" does not exist LINE 5: WHERE comment_count >= 5
如何使用我选择的计数来过滤结果?
最佳答案
使用 Query.subquery()方法。
comments_subq = (
meta.Session.query(
Comment.article_id,
func.count(Comment.id).label("comment_count")
)
.group_by(Comment.article_id)
.subquery()
)
articles = (
meta.Session.query(
Article,
comments_subq.c.comment_count
)
.outerjoin(comments_subq, Article.id == comments_subq.c.article_id)
.filter(comments_subq.c.comment_count >= 5)
)
关于python - SqlAlchemy:如何在 where 子句中使用选定子查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16601470/