簡體   English   中英

在Lambda python查詢DynamoDb中不返回任何數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM