모델을 사용하여 쿼리에서 원하는 열을 지정하려면 어떻게합니까 (기본적으로 모든 열을 선택 함)? sqlalchmey session :으로이 작업을 수행하는 방법을 알고 session.query(self.col1)
있지만 모델에서는 어떻게 수행합니까? 나는 할 수 없다 SomeModel.query()
. 방법이 있습니까?
답변
이 with_entities()
메서드를 사용 하여 결과에 반환 할 열을 제한 할 수 있습니다 . ( 문서 )
result = SomeModel.query.with_entities(SomeModel.col1, SomeModel.col2)
요구 사항에 따라 지연이 유용 할 수도 있습니다 . 이를 통해 전체 객체를 반환 할 수 있지만 와이어로 오는 열을 제한합니다.
답변
session.query().with_entities(SomeModel.col1)
와 같다
session.query(SomeModel.col1)
별칭의 경우 .label ()을 사용할 수 있습니다.
session.query(SomeModel.col1.label('some alias name'))
답변
load_only 함수 를 사용할 수 있습니다 .
from sqlalchemy.orm import load_only
fields = ['name', 'addr', 'phone', 'url']
companies = session.query(SomeModel).options(load_only(*fields)).all()
답변
당신은 사용할 수 있습니다 Model.query
때문에, Model
(선언 확장자를 사용하는 특히 경우 또는 일반적으로 기본 클래스가) 지정됩니다 Sesssion.query_property
. 이 경우는 Model.query
동일하다 Session.query(Model)
.
쿼리에서 반환 된 열을 수정하는 방법을 모르겠습니다 (를 사용하여 더 추가하는 경우 제외 add_columns()
).
따라서 가장 좋은 방법은 Session.query(Model.col1, Model.col2, ...)
(Salil이 이미 보여준 것처럼 )를 사용하는 것 입니다.
답변
답변
여기에 예 :
movies = Movie.query.filter(Movie.rating != 0).order_by(desc(Movie.rating)).all()
등급이 <> 0 인 영화에 대해 db를 쿼리 한 다음 가장 높은 등급으로 등급을 매겨 순서를 지정합니다.
여기 살펴보기 : Flask-SQLAlchemy에서 선택, 삽입, 삭제
답변
