我有以下方法扫描 dynamo 数据库表中的所有项目
async def scan_all(self, parse_item: Callable[[dict], dict], **kwargs) -> List[dict]:
response = await self._db.scan(**kwargs)
response_items = response.get('Items', [])
items = list(parse_item(item) for item in response_items)
last_evaluated_key = response.get('LastEvaluatedKey', None)
while last_evaluated_key is not None:
response = await self._db.scan(ExclusiveStartKey=last_evaluated_key, **kwargs)
response_items = response.get('Items', [])
items.extend(parse_item(item) for item in response_items)
last_evaluated_key = response.get('LastEvaluatedKey', None)
return items
这是正确的方法还是我可以改进它?使用 LastEvaluatedKey
的最佳做法是什么?
最佳答案
嗯,我不确定这个更好,但这就是我的做法(阅读 dynamodb 文档):
Map<String, AttributeValue> lastKeyEvaluated = null;
do {
ScanRequest scanRequest = new ScanRequest().withTableName(TABLE_NAME)
.withExclusiveStartKey(lastKeyEvaluated);
ScanResult result = client.scan(scanRequest);
for (Map<String, AttributeValue> item : result.getItems()) {
}
}while(lastKeyEvaluated != null);
关于python - 如何扫描dynamodb中的所有项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46566644/