当前位置:  开发笔记 > 编程语言 > 正文

带有过滤器的SQLAlchemy func.count

如何解决《带有过滤器的SQLAlchemyfunc.count》经验,为你挑选了0个好方法。

我正在使用一个像这样分页的框架:

def get_count_query(self):
    return self.session.query(func.count('*')).select_from(self.model)

def paginate(self):
    ... ...
    count = self.get_count_query.scalar()
    ...

我想覆盖get_count_query方法以使用我自己的查询,因为我正在过滤一些结果而get_count_query只返回表中的所有元素.查询是动态创建的,例如,一个查询可以是:

Asset.query.join(StatusLabel).filter(StatusLabel.status == 'Deployable', or_(
                                     Asset.assigned_to.isnot(None)),
                                     Asset.deleted_at.is_(None))

我可以使用query.count()以下方法轻松计算此查询中的元素:

def get_count_query(self):
    q = Asset.query.join(StatusLabel).filter(StatusLabel.status == 'Deployable', or_(
                                             Asset.assigned_to.isnot(None)),
                                             Asset.deleted_at.is_(None))
    return q.count()

但是一旦它到达.scalar()方法就会失败(我无法删除此方法).所以问题是:我如何申请func.count('*')现有的查询?

我可以从查询中检索过滤器并将其应用于func.count('*')查询吗?

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有