1

我将 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

谢谢~

4

1 回答 1

1

从 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)

于 2016-08-26T12:06:38.067 回答