【问题标题】:Flask-SQLAlchemy number of results in queryFlask-SQLAlchemy 查询中的结果数
【发布时间】:2013-11-18 06:15:49
【问题描述】:

我想知道是否有人知道如何在烧瓶模板中输出查询的结果数。

示例查看代码:

products = Product.query.all()

在模板中可以很方便地做到:

{{ products.count() }}

是否已经这样做了,或者是否有人编写了一个过滤器来做到这一点?

干杯,

【问题讨论】:

    标签: flask flask-sqlalchemy


    【解决方案1】:

    您的products 模板变量是一个常规列表。您可以使用length 过滤器来获取其大小:

    {{ products|length }}
    

    但是,如果您使用的是分页结果,那么这将为您提供一页的大小。如果您想要整个查询的大小,那么您必须在查询对象上调用count()。例如:

    product_count = Product.query.count()
    

    然后将其作为附加参数传递给模板。或者,如果您愿意,可以将查询对象传递给模板并从那里调用 count()

    {{ product_query.count() }}
    

    【讨论】:

    • 干杯,我写了一个过滤器来处理它,以防查询也是 None 类型。
    • Count 触发 SQL 查询,是的。
    • 但是这个方案在table很大的时候速度很慢,有没有其他方法可以获取count?
    • 获取计数通常非常有效。不确定你使用的是什么数据库,所有主要的数据库实际上都可以从表索引中做到这一点,而不必逐项计算。
    【解决方案2】:

    你可以使用len(products), 它是标准的 python 函数,对我有用

    【讨论】:

    • 它仅在调用 .all() 方法时才有效,因为它将查询结果作为列表返回。
    猜你喜欢
    • 1970-01-01
    • 2020-05-06
    • 2019-04-23
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多