我对NoSQL和AWS DynamoDB还比较陌生。我用python 2.7从AWS Lambda调用它
我正试图从“订单号”字段中检索值。
这就是我的桌子的样子(只有一个记录):
我的设置正确吗?
如果给定顺序号,如何使用python检索记录?
我想不出做这件事的语法。
我试过了
response = table.get_item( Key = {'order_number': myordernumber} )
但我得到:
调用GetItem操作时出错(ValidationException):提供的键元素与架构不匹配:ClientError
确保已导入此:
如果你没有它,你肯定会得到错误。在documentation examples里。
感谢@altoids的评论,因为这是我的正确答案。我想用一个“正式”的回答来引起大家的注意。
DynamoDB不会自动索引对象的所有字段。默认情况下,您可以定义一个散列键(在您的示例中为
subscription_id
),还可以选择定义一个范围键和那些将被索引的范围键。所以,你可以这样做:它将如预期的那样工作。但是,如果要基于
order_number
检索项,则必须使用scan
操作,该操作会查看表中的所有项,以找到具有正确值的项。这是一个非常昂贵的手术。或者可以在表中创建一个全局辅助索引,使用order_number
作为主键。如果这样做并调用新索引order_number-index
,则可以查询与特定订单号匹配的对象,如下所示:DynamoDB是一个非常快速、可伸缩和高效的数据库,但它确实需要考虑您可能希望搜索哪些字段以及如何高效地搜索。
好消息是,现在可以将GSI添加到现有表中。以前你必须删除你的表并重新开始。
相关问题 更多 >
编程相关推荐