2016-09-06 3 views
4

둘 이상의 페이지에 걸쳐있는 경우 DynamoDB 쿼리에서 모든 결과를 반복 할 수 있습니까? This answer는 페이지 매김이 (적어도 V2)에 조회 함수에 내장되어 있음을 의미한다,하지만 난 v3에서이 작업을 할 때, 내 항목이 제한 것 같다 :boto3에서 DynamoDB 쿼리 페이지 매기기

import boto3 
from boto3.dynamodb.conditions import Key, Attr 

dynamodb = boto3.resource('dynamodb') 
fooTable = dynamodb.Table('Foo') 
response = fooTable.query(
    KeyConditionExpression=Key('list_id').eq('123') 
) 

count = 0 

for i in response['Items']: 
    count += 1 

print count # Prints a subset of my total items 
+0

그래야합니다. 전체 테이블을'scan()'하여 정말로 더 많은 항목을 가져 오기로되어 있는지 확인하십시오. – joarleymoraes

+0

감사합니다 @ joarleymoraes,하지만 정확히 시도하고 DynamoDB 콘솔의 개수는 약 10 배 boto3 무엇을 반환합니다. – Jonathan

+0

list_id 문자열 또는 정수입니까? 아마 당신이 그것을 확인하십시오. – joarleymoraes

답변

1

ExclusiveStartKey 당신이 찾고있는 속성의 이름입니다. 이전 작업에서 LastEvaluatedKey에 대해 반환 된 값을 사용합니다.

ExclusiveStartKey의 데이터 형식은 String, Number 또는 Binary 여야합니다. 설정된 데이터 유형이 허용되지 않습니다.

http://boto3.readthedocs.io/en/latest/reference/services/dynamodb.html#DynamoDB.Client.query

+0

아마 더 분명했을 것입니다. 저는'ExclusiveStartKey'를 사용하여 수동으로 페이지 매김을 할 수 있다는 것을 알고 있습니다. 그러나 연결된 대답에서 @ garnaat (boto 작성자)는 쿼리 기능의 상자에서 사용할 수 있어야한다고 권고했습니다. – Jonathan