#python #boto3 #dynamodb-queries
#python #amazon-dynamodb #boto3 #dynamodb-запросы
Вопрос:
При запросе таблицы DynamoDB код отлично работает для допустимой записи (msisdn), однако для несуществующих записей происходит сбой.
import boto3
from botocore.exceptions import ClientError
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('PhoneList')
# Phone Number
# -> Existent: 44790000000
msisdn = 44790000000
try:
response = table.get_item(Key={'MSISDN': msisdn})
name = response['Item']['Name']
ID = str(response['Item']['ID'])
birth = response['Item']['Birth']
except ClientError as e:
print(e.response['Error']['Message'])
print("Phone number not found")
exit(-1)
print("Phone:", msisdn)
print("Name:", name)
print("ID:", id)
print("Birth:", birth)
Недопустимая запись
Traceback (most recent call last):
File "dyn.py", line 15, in <module>
name = response['Item']['Name']
KeyError: 'Item'
База данных
Я думаю, что, возможно, я неправильно обработал исключение?
Ответ №1:
из документации
Если нет соответствующего элемента, GetItem не возвращает никаких данных, и в ответе не будет элемента Item.
итак, вам нужно перехватить KeyError вместо ClientError.