2012-09-25 3 views

답변

4

해당 제한을 무시할 수 없습니다. 이유가 여기 있습니다. 당신이 where x in [n1, n2, n3]에 대한 IN 쿼리를 수행 할 때

, 무엇 실제로 일어나는 것은 3 개 별도의 쿼리를 데이터 저장소에 제출되어 있습니다 : 키의

where x = n1 
where x = n2 
where x = n3 

결과 목록은 다음 중복 제거, 함께 병합, 당신에게 할 최종 결과.

in 목록의 각 항목은 별도의 실제 Datastore 쿼리를 생성하며 GQL 쿼리 당 실제 데이터 저장소 쿼리는 30 개로 제한되므로 목록의 항목은 30 개로 제한됩니다.

0

위에서 설명한 것처럼 쿼리가 30 개의 병렬 별개의 쿼리로 해석되므로 쿼리에서 30 개의 항목 만 가져올 수 있습니다. 해결 방법은 아래 예와 같이 30 개 항목의 일련 요청을하는 것입니다.

offset = 0 
item_count = len(keys) 
result = [] 
while offset < item_count: 
    data = Entity.all().filter('key IN', keys[offset:30]) 
    result.extend(data) 
    offset += 30 
return result 
관련 문제