플라스크 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 |