当前位置: 首页 > 知识库问答 >
问题:

dynamodbpythonapi:检查条件表达式结果的方法?

宰宣
2023-03-14

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

共有2个答案

锺离边浩
2023-03-14

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

鞠嘉誉
2023-03-14

提供一个代码示例

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')
 类似资料:
  • New in Django 1.8. 条件表达式允许你在过滤器、注解、聚合和更新操作中使用 if ... elif ... else的逻辑。条件表达式为表中的每一行计算一系列的条件,并且返回匹配到的结果表达式。条件表达式也可以像其它 表达式一样混合和嵌套。 条件表达式类 我们会在后面的例子中使用下面的模型: from django.db import models class Client(m

  • 当需要根据表达式,而不是参数的值或数量进行匹配时,条件表达式(Guards)就显得非常有用。如果你熟悉函数式编程的话,对条件表达式也不会陌生。 为了尽可能地接近CSS的语言结构,Less使用关键字 when 而不是 if/else来实现条件判断,因为 when 已经在CSS的 @media query 特性中被定义。 表达式中可以使用比较运算符、逻辑运算符、或检查函数来进行条件判断。 1、比较运算

  • 尤达表达式 不要使用尤达表达式。尤达表达式是指,拿一个常量去和变量比较而不是拿变量去和常量比较。它就像是在表达 “蓝色是不是天空的颜色” 或者 “高个是不是这个男人的属性” 而不是 “天空是不是蓝的” 或者 “这个男人是不是高个子的” (译者注:名字起源于星球大战中尤达大师的讲话方式,总是用倒装的语序) 推荐: if ([myValue isEqual:@42]) { ... 不推荐: if ([

  • 英文原文:http://emberjs.com/guides/templates/conditionals/ 有些时候,或许我们只希望在一个属性存在的时候显示一部分模板。 这时,我们就可以使用{{#if}}助手按条件渲染一个代码块,如下所示: 1 2 3 {{#if person}} Welcome back, <b>{{person.firstName}} {{person.lastNam

  • 关键字 (Conditional keywords) 永远不要把 then 和多行的 if/unless 搭配使用。 # 错误 if some_condition then ... end # 正确 if some_condition ... end do 不要和多行的 while 或 until搭配使用。 # 错误 while x > 5 do ... end until x >

  • 问题内容: 我有一个表,其中存储了某些单词或单词组。我想选择以大写字母开头,没有空格且仅包含字母的条目。我的SQL看起来像这样: 我如何使用条件来做同样的事情? 问题答案: 尝试这个: