伙计们,从 DynamoDB 表中检索所有项目,我想用查询替换扫描操作。
目前我正在通过以下(python)提取所有表的数据:
drivertable = Table(url['dbname'])
all_drivers = []
all_drivers_query = drivertable.scan()
for x in all_drivers_query:
all_drivers.append(x['number'])
我将如何更改它以使用查询 API?
谢谢!
伙计们,从 DynamoDB 表中检索所有项目,我想用查询替换扫描操作。
目前我正在通过以下(python)提取所有表的数据:
drivertable = Table(url['dbname'])
all_drivers = []
all_drivers_query = drivertable.scan()
for x in all_drivers_query:
all_drivers.append(x['number'])
我将如何更改它以使用查询 API?
谢谢!
没有办法query
获得表格的全部结果。到目前为止,如果您想从 DynamoDB 中获取所有数据,您有几个选择,所有这些都涉及从 DynamoDB 中实际读取数据:
你不能query
整张桌子。Query
用于通过提供散列键(表的复杂主键散列范围的一部分)来检索一组项目。
query
不知道哈希键就不能使用。
EDIT 作为赏金被添加到这个老问题中,该问题询问:
How do I get a list of hashes from DynamoDB?
好吧 - 在 2014 年 12 月,您仍然无法通过单个 API 询问表的所有哈希键。即使您去放置 GSI,您仍然无法获得 DISTINCT 哈希计数。
我解决这个问题的方法是反规范化。保留另一个没有范围键的表,并将每个散列与主表放在一起。这会为您的应用程序级别增加管理开销(主要是在删除时),但可以解决您提出的问题。