蟒蛇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 docs

DynamoDB进行分页从扫描操作的结果。通过分页,扫描结果被分成1MB(或更小)数据的“页面”。应用程序可以处理结果的第一页,然后处理第二页,等等。

单个扫描将只返回符合1 MB大小限制的结果集。要确定是否有更多的成果,并在同一时间对它们进行检索一个页面,应用程序应该做到以下几点:

  1. 检查低级别扫描结果:

    • 如果结果包含LastEvaluatedKey元素,请继续执行步骤2.
    • 如果结果中没有LastEvaluatedKey,则不再有要检索的项目。
  2. 构造一个新的扫描请求,使用相同的参数与前一个,但是此时,从步骤1取LastEvaluatedKey值并且使用它作为在新的扫描请求的ExclusiveStartKey参数。

  3. 运行新的扫描请求。

  4. 转到步骤1

+0

感谢让我查 – Robert