SQLAlchemy -重写没有子选择的数据库的orm.Query.count



我在一个不支持子选择的数据库中使用sqlalchemy。这意味着像这样的东西不会工作(其中Calendar是继承声明性基的模型):

 Calendar.query.filter(uuid=uuid).count()

我试图用这样的东西覆盖count方法:

def count(self):
    col = func.count(literal_column("'uuid'"))
    return self.from_self(col).scalar()

但是,from_self位仍然执行子选择。我不能这样做:

session.query(sql.func.count(Calendar.uuid)).scalar()

因为我想要Query的所有过滤信息。是否有一种方法,我可以得到当前Query的过滤器参数,而不做子选择?

谢谢~

来自SQLAlchemy文档:

对于要计数的特定列的细粒度控制,要跳过子查询的使用或以其他方式控制FROM子句,或使用其他聚合函数,请将func表达式与query()结合使用,即:

from sqlalchemy import func
# count User records, without
# using a subquery.
session.query(func.count(User.id))
# return count of user "id" grouped
# by "name"
session.query(func.count(User.id)).
        group_by(User.name)
from sqlalchemy import distinct
# count distinct "name" values
session.query(func.count(distinct(User.name)))

来源:SQLAlchemy (SQLAlchemy .orm.query. query. count)

相关内容

  • 没有找到相关文章

最新更新