2016-09-06 41 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

這應該工作。嘗試「掃描()」整個表格,以確保你真的應該得到更多的項目。 – joarleymoraes

+0

謝謝@ joarleymoraes,但我試過了,DynamoDB控制檯中的計數大約是boto3返回的10倍。 – Jonathan

+0

是list_id字符串還是整數?也許你想檢查一下。 – joarleymoraes

回答

1

ExclusiveStartKey是你正在尋找的屬性的名稱。 使用上次操作中爲LastEvaluatedKey返回的值。

ExclusiveStartKey的數據類型必須是字符串,數字或二進制。不允許設置數據類型。

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

+0

也許應該更清楚 - 我知道我可以使用'ExclusiveStartKey'手動分頁。但在關聯的答案中,@garnaat(boto的作者)建議它應該可以在查詢函數中使用。 – Jonathan