使用非散列键字段查询dynamoDB(使用boto / python)

时间:2012-09-18 20:38:59

标签: python amazon-web-services boto amazon-dynamodb

我正在使用带有boto的dynamoDB,并且在我的表的设计/查询中遇到了一些问题。

我希望我的数据看起来像

+---------------------------------------+
hash_key    account_id    mykey
-----------------------------------------
1           12345         myvalue1
2           12345         myvalue2
3           12345         myvalue3
4           123456        myvalue4
+---------------------------------------+

然后检索帐户12345的所有数据。查看boto文档,我总是需要hash_key可用。我知道如何查询这个标准的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

由于我想要使用帐号#12345获取所有条目,无论range_key如何,我都需要查询而不是 get_item

1 个答案:

答案 0 :(得分:5)

我会将account_id用作hash_key以及一些range_key来区分它们。

在DynamoDB中,主键由(hash_keyrange_keyrange_key组成,是可选的。这个元组必须是唯一的。请注意,您需要使用整个元组来访问具有get_item的给定元素。

拥有'auto_increment'hash_key是SQL世界的坏习惯。

如果您想了解有关此主题的更多信息,我在dynamodb-mapper文档中编写了一些关于建模数据的背景知识:http://dynamodb-mapper.readthedocs.org/en/latest/api/model.html#auto-increment-when-to-use