我想查询两个日期之间的服务并总结其价格。当我尝试将func.sum
与Services.query
一起使用时,我得到TypeError: BaseQuery object is not callable
。如何使用Flask-SQLAlchemy函数查询?
Services.query(func.sum(Services.price)).filter(Services.dateAdd.between(start, end))
答案 0 :(得分:18)
Model.query
是db.session.query(Model)
的快捷方式,无法调用。如果您没有查询模型,请继续使用db.session.query(...)
,就像使用常规SQLAlchemy一样。
db.session.query(db.func.sum(Services.price)).filter(
Services.dateAdd.between(start, end)
)
答案 1 :(得分:0)
经过很长一段时间后,您可以通过以下方式使用Flask-SQLAlchemy语法:
Services.query(func.sum(Services.price)).filter(Services.dateAdd.between(start, end)).scalar() # or you can use .scalar() ; .one() ; .first() ; .all() depending on what you want to achieve
基本上,语法Model.query(...).filter(...)
必须以您想要的内容结尾。这是查询中生成错误所缺少的。