首页 > 解决方案 > 无法使用索引从 DynamoDB 表中检索结果

问题描述

我正在使用一个 lambda 函数(ptython),它正在接受一个事件并将其与 dynamodb 表下的值进行比较。

Dynamo DB 屏幕截图 索引

lambda 是正确的,但我无法从数据库中检索任何值,但该值在那里。它说:

{“原因”:“未找到记录”,“成功”:“错误”}

*** 更新:

我可以通过最后一部分检索“Success”:“True”:

else:
        #item = response['Item']
        print("GetItem succeeded:")
        print(json.dumps(response))
        print(response['Items'])
        if "Items" in response:
            return{
                "Success":"True",
                "Extension":response["Items"][{extension}]
                }

它正在打印:

{
  "stackTrace": [
    [
      "/var/task/lambda_function.py",
      30,
      "lambda_handler",
      "\"Extension\":response[\"Items\"][{extension}]"
    ]
  ],
  "errorType": "TypeError",
  "errorMessage": "list indices must be integers, not set"
}

我只需要这个输出:

 "Success":"True"
 "Extension:"7777"

请帮助我实现这一目标,我会将答案标记为正确!

拉姆达截图

Lambda 测试事件

标签: pythonamazon-web-servicesaws-lambdaamazon-dynamodb

解决方案


看起来您正在错误地访问来自 DynamoDB 的响应。

 "Extension":response["Items"][{extension}]

的输出response['Items']是一个列表,您错误地尝试通过[{extension}]. 相反,您应该使用整数访问它,例如response['Items'][0]. 通常,您会在循环中遍历结果,因为query可以返回多个项目。

当您打印来自查询的响应时会发生什么:print(response['Items'])


推荐阅读