使用非散列键字段查询dynamoDB(使用boto/python)
我将dynamoDB与boto一起使用,在表的设计/查询中遇到了一些问题 我希望我的数据看起来像使用非散列键字段查询dynamoDB(使用boto/python),python,amazon-web-services,boto,amazon-dynamodb,Python,Amazon Web Services,Boto,Amazon Dynamodb,我将dynamoDB与boto一起使用,在表的设计/查询中遇到了一些问题 我希望我的数据看起来像 +---------------------------------------+ hash_key account_id mykey ----------------------------------------- 1 12345 myvalue1 2 12345 myvalue2 3 123
+---------------------------------------+
hash_key account_id mykey
-----------------------------------------
1 12345 myvalue1
2 12345 myvalue2
3 12345 myvalue3
4 123456 myvalue4
+---------------------------------------+
然后检索帐户12345的所有数据。查看boto文档,我总是需要hash_键可用。我知道如何查询这个标准SQL/MongoDB,但我找不到boto的解决方案。我想这是可能的?谢谢
编辑:这似乎有效
+---------------------------------------+
hash_key range_key mykey
-----------------------------------------
12345 12568 myvalue1
12345 53890 myvalue2
12345 12322 myvalue3
123456 23432 myvalue4
+---------------------------------------+
接
> res = table.query(hash_key='12345')
> for item in res:
> print i
因为我想抓取所有带有account#12345的条目,而不考虑范围键,所以我需要查询而不是获取项目我会使用account\u id作为
散列键
以及一些范围键
来区分它们
在DynamoDB中,主键由(hash_键
,range_键
)range_键
组成,是可选的。这个元组必须是唯一的。请注意,您需要整个元组才能使用get\u item
访问给定元素
拥有“自动增量”哈希键是SQL世界的一个坏习惯
如果您想了解更多关于这个主题的信息,我在dynamodb mapper文档中写了一些关于建模数据的背景知识:这是我最初想要的,但是哈希键必须是唯一的!是的,使用
range\u键来区分它们。如果你对这个模型有更多的了解,我可以试着推荐一个。我明白了-刚刚测试过,事实上,如果你添加range\u键,dynamoDB允许使用相同的hash\u键。我猜我给range_key的值是不相关的(只要它是唯一的),因为我只使用它来区分条目?这些数据实际上是定期插入的GPS点。谢谢不客气。我更新了我的答案以反映您的评论。请注意,您需要整个(hash_key
,range_key
)元组来访问随机元素。顺便说一句,如果这解决了你的问题,你可以考虑接受这个答案:)还添加了一个编辑——看起来像“代码>查询<代码> >,但我不确定这里的性能含义。当你这样查询时,你是否体验过一个“未知的Frter Type Trror”?