使用python Boto3在DynamoDB上进行扫描或查询操作

时间:2019-12-19 12:30:36

标签: python-3.x amazon-dynamodb boto3 dynamodb-queries

我有用户表,用户有 user_id 字段。

我需要获取给定列表的所有用户详细信息,例如[“ 1234”,“ 3456”]。

在Boto3中没有包含类似查询的内容。

我正在使用

response = table.scan(FilterExpression=Attr('user_id').is_in(["1234","3456"]))

但是我没有得到预期的结果。

如果我错过任何事情,请纠正我。

1 个答案:

答案 0 :(得分:1)

您需要回答的一个问题是:user_id是您的DynamoDB哈希/分区密钥吗?如果是,那么您正在寻找的操作是:BatchGetItem。您可以here看到它的工作原理。

如果user_id不是您的分区/哈希键,第一个(也是错误的)解决方案是扫描整个表并过滤其数据(这是一种非常昂贵的方法,应不惜一切代价避免使用)。第二种更有效的解决方案是使用user_id作为哈希/分区键来创建全局索引(GSI),并将要返回的数据投影到索引中。您可以了解有关GSI here的更多信息。