民间, 从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?
谢谢!
答案 0 :(得分:2)
你不能query
整张桌子。 Query
用于通过提供散列键(表的复杂主键散列范围的一部分)来检索一组项。
如果不知道哈希键,就无法使用query
。
编辑作为赏金被添加到这个问题中的旧问题:
How do I get a list of hashes from DynamoDB?
嗯 - 在2014年12月,您仍然无法通过单个API询问表的所有哈希键。 即使您去放置GSI,您仍然无法获得DISTINCT哈希计数。
我解决这个问题的方法是去标准化。保留另一个没有范围键的表,并将每个哈希与主表放在一起。这会增加应用程序级别的管理开销(主要是在删除时),但可以解决您提出的问题。
答案 1 :(得分:2)
无法query
获取表格的整个结果。目前,如果您希望从DynamoDB中获取所有数据,并且所有这些数据都涉及实际从DynamoDB中读取数据,那么您有几个选项: