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,插入,删除