Boto3 dynamodb查询在10Gb大小的表上

时间:2017-03-22 15:41:19

标签: amazon-dynamodb boto3

我一直在尝试获取GSI中的一个上的所有记录,并且已经看到只有在我进行扫描时,才有选项可以在响应中使用LastEvaluatedKey。我在pagination中找不到使用boto3查询的更好方法。是否可以使用查询进行分页。

导入boto3     来自boto3.dynamodb.conditions import Key,Attr

dynamodb = boto3.resource('dynamodb')
res = table.query(
    TableName='myTable',
    IndexName='my-index',
    KeyConditionExpression=Key('myVal').eq(1)
)
while 'LastEvaluatedKey' in res:

   for item in res['Items']:
       print item #returns only a subset of them

1 个答案:

答案 0 :(得分:2)

该文件提到了boto3.dynamodb.table.query()的限制:1MB数据。

你只能使用Paginator.Query返回迭代器(有意义)。

看来你可以用Paginator.Query替换你的table.query。尝试一下。

备注: boto3.resource()有一个问题:并非所有资源服务都已实现。因此对于dynamodb分页生成器,这是其中一种情况。

import boto3 
dyno_client = boto3.client('dynamodb')
paginator = dyno_client.get_paginator('query')
response_iterator = paginator.paginate(.....)