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

如何在Flask-sqlalchemy中使用count()

如何解决《如何在Flask-sqlalchemy中使用count()》经验,为你挑选了3个好方法。

我正在协助一个使用flask-sqlalchemy的项目.我想要一个db查询来计算表中的记录数.可以直接使用table.query.filter_by(condition).count()或者我需要什么加.请帮助我.我是个乞丐.谢谢!



1> Treefish Zha..:

根据此来源,以下内容适合您:

session.query(Class_name).filter_by(condition).count()

Class_name是表的映射类的名称.



2> Logan Bertra..:

给定的答案都没有专门针对flask-sqlalchemy,您将在其中使用给出的示例:

Table.query.filter_by(condition).count()

您可以.count()不使用过滤器来执行:

Table.count()

您还可以使用M2M关系进行计数:

ParentTable.children.count()

您可以在jinja模板中直接使用其中的任何一个,例如:

{{ Table.query.filter_by(condition).count() }}

奖励积分(对于注重表现的人):

.count() 有点慢(特别是在MySQL中,由于对子查询的处理不善),因此,您可以使用如下所示的自定义计数:

db.session.execute(Table.query.filter_by(condition).statement.with_only_columns([func.count()]).order_by(None)).scalar()

假设db是您的SQLAlchemy实例(即db = SQLAlchemy(app))。这很麻烦,但是可以节省一些大查询的开销。



3> antonio_antu..:

是的,就是这样。但是请记住,“ count()”会再进行一次查询,如下所示:

Select count(q.*) from (select * from table) q

这不是最优化的。您可以使用此:

from sqlalchemy.sql.functions import func
number = session.query(func.count(table.id).label('number').first().number

SQL查询将如下所示:

Select count(table.id) from table

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