【问题标题】: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 文档中有详细说明,但不是这个!