boto3 условно удалить в python - PullRequest
       33

boto3 условно удалить в python

0 голосов
/ 25 февраля 2020

У меня есть база данных DynamoDB со следующей схемой:

user    id    payload
123     abcd   some value
456     abcd   some value     

Как мне удалить идентификатор abcd, соответствующий пользователю 456? что если пользователь 456 не существует? Я попытался:

try:
    resource.delete_item(
    Key={'user': 456,
        'id': 'abcd'
        })
except botocore.exceptions.ClientError as e:
        if e.response['Error']['Code'] == 'ConditionalCheckFailedException':
            print(e.response['Error']['Message'])
        else:
            raise
    else:
        print("DeletePortfolio Successful...")

Я всегда получаю утверждение «DeletePortfolio Successful», даже если я ставлю случайного пользователя, такого как 478, или оставляю пользователя 456 и неверный идентификатор, такой как «defg». Как сделать условное удаление, только если ключ и значение присутствуют? Спасибо

1 Ответ

1 голос
/ 25 февраля 2020

Я понял это.

Надеюсь, это кому-нибудь поможет

def deleteItem(user, id):
    try:
        resource.delete_item(
           Key={'user': user, 'id': id},
           ConditionExpression='attribute_exists(id)'
           )
    except botocore.exceptions.ClientError as e:
        if e.response['Error']['Code'] in ['ConditionalCheckFailedException',
         'ParamVAlidationError']:
              print(e.response['Error']['Message'])
        else:
            raise
    else:
        print("delete successful")
...