2016-08-01 4 views
0

SQLAlchemy 쿼리의 결과를 serialize하려고합니다. 나는 ORM을 처음 사용하므로 검색 한 결과를 필터링하는 방법을 모르겠습니다. 결과 집합은 다음과 같다 나는 물체를 평평하게하는 경우 :열의 값을 기반으로 SQLAlchemy 결과를 필터링하는 방법은 무엇입니까?

A1 지하 1 V1

A1 지하 1 V2

A2의 B2의 V3 난에이를 직렬화 할 필요가

객체 목록, A에 대한 고유 값 당 1 개, 각각 V 값 목록이 있습니다. IE :

오브젝트 1 :

  • A : A1

  • B : B1

  • V {V1, V2}

Object2 :

  • A : A2

  • B : B2

  • V {V3}

주어진 컬럼에 대한 모든 고유 값을 반복하는 방법이 있지만 능력이 있는가 다른 열의 값 목록을 반환 하시겠습니까?

답변

0

그래는 func.array_agg

import sqlalchemy.sql.functions as func 
session.query(Object.col1, Object.col2, func.array_agg(Object.col3)) 
    .group_by(Object.col1) 
    .group_by(Object.col2) 
    .all() 

group_by 사용하지만이 위로 데이터베이스 작업 떨어져 그냥 의사 기능으로 자신의 그룹을 작성해야 할 것 것을에서, 동등한 집계 함수로 종료됩니다. SQL alchemy는 pythony 코드를 적절한 sql로 변환하기 만하면 다른 모든 로직은 보통 프로그래머에게 남겨집니다.

등가 PostgreSQL을

SELECT col1, col2, array_agg(col3) 
FROM objects 
GROUP BY col1, col2; 
0

내가 연관 테이블과 joinedload() 함수를 사용하는 데 필요한 낸다. 설명서는 조금 어색하지만, 잠시 놀고 나면 거기에 있습니다.

관련 문제