Flask SQLAlchemy查询,指定列名称

如何使用模型在我的查询中指定所需的列。 (它默认select所有列)我知道如何使用sqlalchmey会话来做到这一点: session.query(self.col1)但我怎么处理模型。 我不能做SomeModel.query() ,有没有办法?

您可以使用with_entities()方法来限制结果中要返回的列。 ( 文件 )

 result = SomeModel.query.with_entities(SomeModel.col1, SomeModel.col2) 

根据您的要求,您也可能会发现有用的延期 。 它们允许您返回完整的对象,但限制通过电线的列。

这是相同的:

 session.query(SomeModel.col1) 

您可以使用Model.query ,因为Model (或通常其基类,特别是在使用声明性扩展的情况下)被分配了Sesssion.query_property 。 在这种情况下, Model.query等同于Session.query(Model)

我不知道如何修改查询返回的列(除了添加更多使用add_columns() )。
所以你最好的办法是使用Session.query(Model.col1, Model.col2, ...) (如Salil已经显示的那样)。

你可以使用load_only函数:

 from sqlalchemy.orm import load_only fields = ['name', 'addr', 'phone', 'url'] companies = session.query(Company).options(load_only(*fields)).all() 

“公司”是你的模型(在你的情况下,它是SomeModel)

这里有一个例子:

 movies = Movie.query.filter(Movie.rating != 0).order_by(desc(Movie.rating)).all() 

我查询分数为电影评级<> 0,然后我sorting他们首先评分与最高评分。

看看这里: 在Flask-SQLAlchemy中select,插入,删除