首页 > 解决方案 > 使用 Python 查询 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'

数据库

在此处输入图像描述

我想我可能没有正确处理异常?

标签: pythonboto3dynamodb-queries

解决方案


文档

如果没有匹配项,GetItem 不返回任何数据,响应中也不会有 Item 元素。

所以你需要捕获 KeyError 而不是 ClientError。


推荐阅读