蟒蛇DynamoDB扫描操作不会返回所有记录
问题描述:
在DynamoDB表,我有161712记录当任何适用的过滤器,我已经收到扫描计数值只有10589蟒蛇DynamoDB扫描操作不会返回所有记录
这是MYTABLE元
{
"AttributeDefinitions": [
{
"AttributeName": "question_id",
"AttributeType": "N"
},
{
"AttributeName": "timestamp",
"AttributeType": "S"
}
],
"TableName": "users_answers",
"KeySchema": [
{
"AttributeName": "timestamp",
"KeyType": "HASH"
},
{
"AttributeName": "question_id",
"KeyType": "RANGE"
}
],
"TableStatus": "ACTIVE",
"CreationDateTime": "2017-09-12T12:33:22.615Z",
"ProvisionedThroughput": {
"LastIncreaseDateTime": "2017-09-12T16:46:26.742Z",
"NumberOfDecreasesToday": 0,
"ReadCapacityUnits": 80,
"WriteCapacityUnits": 80
},
"TableSizeBytes": 16014441,
"ItemCount": 161712
}
当我这样做扫描上面的表格操作将只得到10589条记录
table = dynamo.get_table('answer_options')
x = table.scan()
请建议我如何从表中取整记录
ENV:提前蟒蛇3.5.1,烧瓶dynamodb
感谢
答
DynamoDB只有每个请求返回1MB。您必须遍历并发出多个请求,直到获得完整的数据集。
DynamoDB进行分页从扫描操作的结果。通过分页,扫描结果被分成1MB(或更小)数据的“页面”。应用程序可以处理结果的第一页,然后处理第二页,等等。
单个扫描将只返回符合1 MB大小限制的结果集。要确定是否有更多的成果,并在同一时间对它们进行检索一个页面,应用程序应该做到以下几点:
检查低级别扫描结果:
- 如果结果包含LastEvaluatedKey元素,请继续执行步骤2.
- 如果结果中没有LastEvaluatedKey,则不再有要检索的项目。
构造一个新的扫描请求,使用相同的参数与前一个,但是此时,从步骤1取LastEvaluatedKey值并且使用它作为在新的扫描请求的ExclusiveStartKey参数。
运行新的扫描请求。
转到步骤1
感谢让我查 – Robert