[英]in Lambda python query DynamoDb does not return any data
我編寫了此函數,以從歌手姓名為Joe的表中返回數據。 但是下面的代碼沒有任何結果。 它會先打印。 但是之后沒事了。 不知道我在做什么錯。
from __future__ import print_function # Python 2/3 compatibility
import json
import boto3
from boto3.dynamodb.conditions import Key, Attr
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('Music')
def handler(event, context):
print("Joe's music")
print(table.creation_date_time)
response = table.query(
KeyConditionExpression=Key('Artist').eq('Joe')
)
for i in response['Items']:
print(i['Artist'], ":", i['Artist'])
這是我得到的結果。
START RequestId: ...... Version: $LATEST
Joe's music
2017-07-19 03:07:54.701000+00:00
END RequestId: ...
引用一段代碼示例:
def handler(event,context):
print("Joe's music")
print(table.creation_date_time)
response = table.query(
KeyConditionExpression=Key('Artist').eq('Joe')
)
for i in response['Items']:
print(i['Artist'], ":", i['Artist'])
這就是您所擁有的代碼,包括縮進嗎? 回想縮進對於Python中的程序結構很重要。 這意味着您的handler
僅由2條print
語句組成,而表查找代碼不在此范圍內。 您只會看到這兩個print
語句的結果,這很有意義。
也許您的意思更像這樣,將縮進更改為將表查找和響應處理代碼與其余handler
代碼分組在一起。
def handler(event,context):
print("Joe's music")
print(table.creation_date_time)
response = table.query(
KeyConditionExpression=Key('Artist').eq('Joe')
)
for i in response['Items']:
print(i['Artist'], ":", i['Artist'])
此外,也許您想根據需要return
一個值。 有關Lambda函數處理程序(Python)的AWS文檔具有更多詳細信息,包括有關return
值何時有意義的討論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.