在Flask-SQLAlchemy模型上查询函数使BaseQuery对象无法调用错误

时间:2016-12-01 19:04:52

标签: python flask sqlalchemy flask-sqlalchemy

我想查询两个日期之间的服务并总结其价格。当我尝试将func.sumServices.query一起使用时,我得到TypeError: BaseQuery object is not callable。如何使用Flask-SQLAlchemy函数查询?

Services.query(func.sum(Services.price)).filter(Services.dateAdd.between(start, end))

2 个答案:

答案 0 :(得分:18)

Model.querydb.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(...)必须以您想要的内容结尾。这是查询中生成错误所缺少的。

Query object in SQLAlchemy