2014-06-10 7 views
0

를 구축하는 문제가 내가 않는 쿼리를 작성 문제를 데 다음
*이
* 모델
* 트림 할web2py - 쿼리

차량
* PART_NUMBER
* 정확성

먼저 각 부품 번호에 대해 가장 높은 수준의 정확도를 찾는 쿼리를 수행합니다. dic [part_number] =이 part_number의 가장 높은 정확도와 같은 사전을 만듭니다.

그런 다음 두 번째 쿼리를 수행하고 싶습니다. 나는 메이크업, 모델링, 그리고 트림을 매치하여 어떤 가치를 지니고 있습니다. 다음으로 수행 할 작업은 현재 레코드의 정확도가 알려진 최고 정확도 수준과 같은지 확인하는 것입니다.
쿼리 == DICT [dB & = (db.vehicle.accuracy : 기본적으로 난 단지 정확도에서 가장 높은 수준의 나는 무엇을 시도했다

(즉, 모델에 일치 분명히 트림) 레코드를 원한다. vehicle.part_number])

나는 다음과 같은 오류가 발생합니다 :
유형 0xsomeval

는이 문제에 접근하는 가장 좋은 방법인가에서 'exceptions.KeyError'gluon.dal.Field 개체를? 아마도 내가 원하는 결과를 얻는 또 다른 방법이있을 것입니다.

답변

0

거기에 주목할 가치가있는 몇 가지. 당신이있어, 그 위의 코드처럼 보이는,

def reduce_query_list(query_list, operator = 'and'): 
    if operator == 'or': 
     return reduce(lambda q01, q02:q01|q02, query_list) 
    elif operator == 'and': 
     return reduce(lambda q01, q02:q01&q02, query_list) 

둘째 : 우선은, 깔끔한 물건을 유지하기 위해, 다음과 같은 기능을 사용하여 감소 다음 쿼리의 목록을 구축하고자하고 있습니다 해당 필드의 테이블에 저장된 값을 사용하지 않고 실제 db 필드를 키로 사용하려고합니다 (해당 Exception을 설명 할 수 있음). 이것이 당신이하고 싶은 일이라고 확신합니까?

편집 : 내가 제대로 이해하면

, 당신의 오류 키로 필드 객체를 사용하려고 시도에서 비롯됩니다. 대신 키 목록으로 다음을 사용하십시오.

part_number_list = [value['part_number'] for value in db(db.vehicle).select()] 
+0

키를 고려할 레코드의 부품 번호 값으로 사용합니다. 예를 들어, 각 레코드에 대해 정확도가 가장 높은 경우 결과 세트에서 레코드를 제거하지 않겠습니까? 사전은 각 부품 번호에 대해 가장 높은 정확도를 저장합니다. – asumal

+0

오른쪽 - 당신이 위에서 뭘하고 있는지 실제 필드 개체 ​​(해당 필드의 모든 값이 아닌) DB 테이블에서 키를 사용하는 것 같습니다. 대신, 키로 사용하려는 것은 해당 필드에 저장된 실제 값입니다. 위의 게시물을 편집하여 내가하려는 일을 수행 할 수 있는지 보여줄 수 있는지 확인합니다. – Spokes