python - 无法使用索引从 DynamoDB 表中检索结果
问题描述
我正在使用一个 lambda 函数(ptython),它正在接受一个事件并将其与 dynamodb 表下的值进行比较。
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"
请帮助我实现这一目标,我会将答案标记为正确!
解决方案
看起来您正在错误地访问来自 DynamoDB 的响应。
"Extension":response["Items"][{extension}]
的输出response['Items']
是一个列表,您错误地尝试通过[{extension}]
. 相反,您应该使用整数访问它,例如response['Items'][0]
. 通常,您会在循环中遍历结果,因为query
可以返回多个项目。
当您打印来自查询的响应时会发生什么:print(response['Items'])
?
推荐阅读
- python - “tensorflow_federated”没有属性“NamedTupleType”
- konvajs - 使用 React Konva 添加填充
- sql - 如何对sql中的列求和
- typescript - 如何使用静态和动态键为对象定义 TypeScript 类型?
- php - laravel 传递控制器对象而不是类
- python - 如何避免在 Python for 循环中截断我的 CSV 输出?
- java - Chronicle Values:如果它仍然需要在堆上分配一个实例,那有什么意义呢?
- java - 创建具有在运行时确定的类型的对象
- node.js - 我的 Node js 程序给了我一个错误“我的添加函数不是函数”
- nunjucks - Nunjucks 排序中的点符号不起作用