在Lambda python查询中,DynamoDb不返回任何数据

在Lambda python查询中,DynamoDb不返回任何数据,python,amazon-dynamodb,aws-lambda,Python,Amazon Dynamodb,Aws Lambda,我编写这个函数是为了从艺术家名为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') ta

我编写这个函数是为了从艺术家名为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中的程序结构非常重要。这意味着您的
处理程序
只包含2条
print
语句,表查找代码就在这条语句之外。您只会看到这两条
print
语句的结果是有道理的

也许您的意思更像这样,缩进更改为将表查找和响应处理代码与
处理程序的其余部分分组

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'])

此外,根据您的需要,您可能希望
返回一个值。关于的AWS文档有更多详细信息,包括关于
返回值何时重要的讨论。

谢谢Chris,它现在可以工作了。我正在学习这一点,这件事很痛苦。不确定是什么样的大脑设计了这种逻辑:(还有什么好的IDE可以与aws python一起使用。aws没有代码洞察等@ary,有些人喜欢缩进,而不是平衡花括号。我猜不同的笔划。:-)我自己不使用python IDE,但我听说了一些好东西。