Python SQLAlchemy func.count带筛选器
我使用的框架可以进行如下分页:Python SQLAlchemy func.count带筛选器,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,我使用的框架可以进行如下分页: def get_count_query(self): return self.session.query(func.count('*')).select_from(self.model) def paginate(self): ... <irrelevant>... count = self.get_count_query.scalar() ... 使用query.count(),我可以轻松计算此查询中的元素: 但是
def get_count_query(self):
return self.session.query(func.count('*')).select_from(self.model)
def paginate(self):
... <irrelevant>...
count = self.get_count_query.scalar()
...
使用query.count()
,我可以轻松计算此查询中的元素:
但是一旦到达.scalar()方法,它就会失败(我不能删除这个方法)。所以问题是:如何将func.count('*')
应用于现有查询
我可以从查询中检索筛选器并将其应用于
函数计数('*')
查询吗?您可以使用从中选择与连接和筛选器
def get_count_query(self):
return self.session.query(func.count('*')).select_from(Asset).join(StatusLabel)\
.filter(StatusLabel.status == 'Deployable', or_(
Asset.assigned_to.isnot(None),
Asset.deleted_at.is_(None)))
带子查询
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 self.session.query(func.count('*')).select_from(q.subquery())
谢谢你的回复,但这对我不起作用。查询是动态构造的,并非总是一样的。非常感谢!这个简单的问题困扰了我好几个小时!:)
def get_count_query(self):
return self.session.query(func.count('*')).select_from(Asset).join(StatusLabel)\
.filter(StatusLabel.status == 'Deployable', or_(
Asset.assigned_to.isnot(None),
Asset.deleted_at.is_(None)))
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 self.session.query(func.count('*')).select_from(q.subquery())