【问题标题】:DynamoDB Python API: Way to check result of conditional expression?DynamoDB Python API:检查条件表达式结果的方法?
【发布时间】:2020-09-01 15:32:41
【问题描述】:

使用 DynamoDB,我知道我可以指定一个条件表达式来控制更新,例如,使用 attribute_not_exists() 来防止覆盖现有项目。但是,有没有办法检查这个结果? IE。如果确实存在一个现有项目并且创建失败,我想知道这一点,以便我可以在我的 HTTP 响应中返回一个错误代码。但是,查看 Boto3 中的文档,默认情况下 put_item 什么也不返回,所以我不确定如何监控操作是否成功。有人找到方法了吗?

【问题讨论】:

    标签: python amazon-web-services amazon-dynamodb


    【解决方案1】:

    提供代码示例

    import boto3
    from botocore.exceptions import ClientError
    
    dynamodb = boto3.client('dynamodb')
    
    try:
        response = dynamodb.put_item(
            TableName='my-table',
            Item={
                "MyPartitionKey": {
                    "S": 'some-unique-value'
                }
            },
            ConditionExpression="attribute_not_exists(MyPartitionKey)",
        )
        print('this worked!')
    except ClientError as e:
        if e.response['Error']['Code'] != 'ConditionalCheckFailedException':
            print('This was not a unique key')
        else:
            print('some other error')
    

    【讨论】:

      【解决方案2】:

      找到它,抛出 ConditionalCheckFailedException。失望的文档没有提到这一点,其他类型的异常在 boto3 文档中有详细说明,但不是这个!

      【讨论】:

      • 同意这应该被更好地记录下来。我是从this SO answer 那里学到的
      猜你喜欢
      • 1970-01-01
      • 2019-03-22
      • 2014-04-08
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-21
      相关资源
      最近更新 更多