amazon-web-services - 如何使用 AWS lambda 从 Dynamo DB 中检索多个项目
问题描述
如何从数据库中获取多个项目。下面的代码给我一个错误,因为它只获取一个项目。我正在根据电子邮件值检索项目。
import json
import os
import boto3
import decimalencoder
dynamodb = boto3.resource('dynamodb')
def get(event, context):
table = dynamodb.Table(os.environ['DYNAMODB_TABLE'])
# fetch a person from the database
result = table.get_item(
Key={
'email': event['pathParameters']['email']
}
)
# create a response
response = {
"statusCode": 200,
"body": json.dumps(result['Item'], cls=decimalencoder.DecimalEncoder),
"headers": {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Credentials": "true"
}
}
return response
解决方案
要从 db 中检索多行,首先查询要过滤数据的 id。然后维护一个列表以将所有行值存储在其中。
def lambda_handler(event,context):
item = table.query(
KeyConditionExpression=Key('hubID').eq(hubId)
)
if (item["Count"] == 0):
response = {"msg": "Item not exist, can't perform READ"}
else:
i = 1
lst = []
while i < item["Count"]:
response = {
"hubId" : item["Items"][i]["hubID"],
"deviceState": int(item["Items"][i]["deviceState"]),
"deviceId": item["Items"][i]["deviceID"],
"deviceType": item["Items"][i]["deviceType"],
"intensity": int(item["Items"][i]["intensity"])
}
lst.append(response)
i += 1
print(lst)
response = lst
return response
推荐阅读
- python - 使用plotlearningcurves函数python时出错
- javascript - 日本动漫.js 不针对元素
- php - Wordpress/Woocommerce/PHP 订购产品 - 销售 | In_Stock | 缺货
- matlab - Simulink 代码生成错误:类数组初始化
- r - R 用户如何在 HTTP 服务器上使用异步操作?
- java - 在测试配置文件运行期间从 settings.xml 注入属性值
- swift - MongoDB Realm Swift API 仍然可以像在 Stitch 中那样将结构插入 Atlas 集合吗?
- python - 如何从 aws s3 导入多个文件
- c++ - 使用方法声明未知数量的变量
- flutter - Flutter 动态列表,非空验证