簡體   English   中英

如果項目不存在,如何修復密鑰錯誤“Item”dynamodb?

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

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