2011-10-05 4 views
1

이 쿼리의 결과를 얻기 위해파이썬, SQLAlchemy의는 : 쿼리, 필터 및 반환 값

Session.query(model.Place).join(model.Location).filter(model.Location.great_circle_distance(location) < r) 

, 그것은 model.Location.great_circle_distance(location)을 계산 한했다, 나는 필터 쿼리를 실행 말. 이 쿼리를 실행 한 후에 great_circle_distancer보다 작은 기준과 일치하는 Places의 목록을 얻을 수 있지만 해당 계산 결과와 해당 쿼리와 일치하는 장소 목록을 한꺼번에 모두 반환 할 수있는 방법이 있습니까? 급습?

+0

은 위치 모델에 추가 한 메소드 인 great_circle_distance (location)입니다. 'location'이고'r'은이 쿼리 라인 바로 앞에 정의 된 로컬 변수입니까? – jdi

+0

예, 예, 예. – john

+2

great_circle_distance() 호출을 한 줄에서 수행 할 수없는 이유는 무엇입니까? 그리고 그 호출 결과와 함께 다음 쿼리를 수행 할 수 있습니까? 이 값을 결과로 집계하는 쿼리 명령을 시도하고 공식화하는 것은 불필요한 것처럼 보입니다. – jdi

답변

0

기본적으로 데이터베이스보기 인 클래스를 파생하려면 join, column_propertymapper을 사용할 수 있습니다. 그러나 하나 이상의 장소에서 행을 사용하거나 행 수가 많지 않으면 별개의 쿼리를 수행하여 Location 개체를 얻고 map을 사용하여 원 거리를 계산합니다.

+0

원거리 거리를 계산하는 데'map'을 사용한다는 것은 무엇을 의미합니까? 정교하게 제발 주시겠습니까? – john

+0

두 개의 별도의 쿼리를 사용한 경우'model.Place'에 조인 된'model.Location'을 쿼리하고 모든 객체를 검색합니다. 그런 다음 모든 거리를 얻기 위해 거리 계산에 해당 객체를 '매핑'합니다. – wberry