[英]How to fix Key error "Item" dynamodb, if item does not exist?
def func(name):
ddb = session.resource(service_name="dynamodb")
table = ddb.Table("TABLE_X")
response = table.get_item(Key={"employee": user})
data = response["Item"]
for item in data.items():
if data["employee"] == name:
manager = data["manager"]
return name, manager
return False
ddb表有:
員工 | 經理 |
---|---|
簡 | 約翰 |
本 | 麥克風 |
我想說,如果用戶不存在,則返回未找到用戶。
我知道如果它不存在它會返回密鑰錯誤,那么我怎樣才能以一種方式實現它,它會返回一個 output no user found 而不是密鑰錯誤?
您可以檢查鍵是否在字典中,其中'foo' in bar
。 因此,從您希望返回False
的注釋判斷,如果未找到某些內容,則打印一條錯誤消息。
顯式檢查
對於您想要的每個密鑰,檢查它是否存在:
def func(name):
ddb = session.resource(service_name="dynamodb")
table = ddb.Table("TABLE_X")
response = table.get_item(Key={"employee": user})
if not 'Item' in response:
print('User not found')
return False
data = response["Item"]
for item in data.items():
if "employee" in data and data["employee"] == name:
manager = data["manager"]
return name, manager
return False
隱式檢查(捕獲錯誤) *
上面的方法很可能會遺漏要檢查的部分...有一個 python 構建方式來處理預期的錯誤...
def func(name):
try:
ddb = session.resource(service_name="dynamodb")
table = ddb.Table("TABLE_X")
response = table.get_item(Key={"employee": user})
data = response["Item"]
for item in data.items():
if data["employee"] == name:
manager = data["manager"]
return name, manager
return False
except KeyError as e:
print('User could not be found. Original error:', e.message)
return False
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.