我正在协助一个使用flask-sqlalchemy的项目。我想要一个db查询来计算表中的记录数。可以直接使用table.query.filter_by(condition).count()或者是否有任何内容我需要补充一下。请帮助我。我是个乞丐。谢谢你!
答案 0 :(得分:11)
答案 1 :(得分:6)
给出的答案都没有专门针对 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)
)。这很麻烦,但是可以节省一些大查询的开销。
答案 2 :(得分:5)
是的,就是这样。但请记住,那是' 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
答案 3 :(得分:-1)
简单最好:
accounts = db.session.execute('select count(id) as c from user').scalar()