답변:
이 with_entities()
메서드를 사용 하여 결과에 반환 할 열을 제한 할 수 있습니다 . ( 문서 )
result = SomeModel.query.with_entities(SomeModel.col1, SomeModel.col2)
요구 사항에 따라 지연이 유용 할 수도 있습니다 . 이를 통해 전체 객체를 반환 할 수 있지만 와이어로 오는 열을 제한합니다.
ID
두 테이블에 존재하는 필드
.label()
stackoverflow.com/a/11535992/248616
session.query().with_entities(SomeModel.col1)
와 같다
session.query(SomeModel.col1)
별칭의 경우 .label ()을 사용할 수 있습니다.
session.query(SomeModel.col1.label('some alias name'))
session.query().with_entities(SomeModel.col1)
load_only 함수 를 사용할 수 있습니다 .
from sqlalchemy.orm import load_only
fields = ['name', 'addr', 'phone', 'url']
companies = session.query(SomeModel).options(load_only(*fields)).all()
.first()
및 .one()
(지연 / 간단로드 필드 및 관계)와 정확히 동일한 유형의 개체를 반환합니다 .-쿼리 구성 요소로 설정할 수 있습니다.
with_entities
받아 들여진 대답에 주어진대로 사용 했으며 쿼리는 해당 필드 만 선택했습니다.
당신은 사용할 수 있습니다 Model.query
때문에, Model
(선언 확장자를 사용하는 특히 경우 또는 일반적으로 기본 클래스가) 지정됩니다 Sesssion.query_property
. 이 경우는 Model.query
동일하다 Session.query(Model)
.
쿼리에서 반환 된 열을 수정하는 방법을 모르겠습니다 (를 사용하여 더 추가하는 경우 제외 add_columns()
).
따라서 가장 좋은 방법은 Session.query(Model.col1, Model.col2, ...)
(Salil이 이미 보여준 것처럼 )를 사용하는 것 입니다.
Query.values, Query.values를 사용할 수 있습니다.
session.query(SomeModel).values('id', 'user')
여기에 예 :
movies = Movie.query.filter(Movie.rating != 0).order_by(desc(Movie.rating)).all()
등급이 <> 0 인 영화에 대해 db를 쿼리 한 다음 가장 높은 등급으로 등급을 매겨 순서를 지정합니다.
여기 살펴보기 : Flask-SQLAlchemy에서 선택, 삽입, 삭제