플라스크 SQL 화학 쿼리, 열 이름 지정
모델을 사용하여 쿼리에서 원하는 열을 지정하려면 어떻게 해야 합니까(기본적으로 모든 열이 선택됨)?sqlalchmy 세션을 사용하는 방법을 알고 있습니다.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
(또는 일반적으로 기본 클래스, 특히 선언적 확장이 사용되는 경우)이 할당됩니다.이 경우에는Model.query
와 동등합니다.Session.query(Model)
.
쿼리에서 반환된 열을 수정하는 방법을 알지 못합니다(를 사용하여 추가하는 경우 제외).
그래서 당신의 최선의 방법은Session.query(Model.col1, Model.col2, ...)
(이미 Salil에 표시된 바와 같이).
Query.values, Query.values를 사용할 수 있습니다.
session.query(SomeModel).values('id', 'user')
저는 주로 다음 스니펫을 사용합니다.
fields = ["col1", "col2", ...]\
session.query(map(lambda x: getattr(SomeModel.c, x), fields))
result = ModalName.query.add_columns(ModelName.colname, ModelName.colname)
~하듯이session.query(SomeModel.col1)
이와 같은 튜플 배열을 반환합니다.[('value_1',),('value_2',)]
일반 배열로 결과를 캐스트하려면 다음 문 중 하나를 사용하여 결과를 캐스트할 수 있습니다.
values = [value[0] for value in session.query(SomeModel.col1)]
values = [model.col1 for model in session.query(SomeModel).options(load_only('col1'))]
결과:
['value_1', 'value_2']
특정 열이 있는 엔티티를 가져오는 대체 구문:
any_query.with_entities(Entity).options(load_only(Entity.col))
언급URL : https://stackoverflow.com/questions/11530196/flask-sqlalchemy-query-specify-column-names
'programing' 카테고리의 다른 글
SignalR에서 특정 클라이언트 호출 (0) | 2023.06.11 |
---|---|
목록의 각 요소를 int로 어떻게 나누나요? (0) | 2023.06.11 |
GoDaddy의 TXT 레코드를 검증하지 않는 파이어베이스 호스팅 (0) | 2023.06.11 |
PHP 스프레드시트: 로드된 행 수를 가져오는 방법은 무엇입니까? (0) | 2023.06.11 |
프로그래밍 방식으로 연락처 액세스 요청 (0) | 2023.06.11 |