我尝试使用条件表达式测试put_item调用,在使用boto3.dynamodb.conditions中的Attr()时出现错误。
Invalid type for parameter ConditionExpression, value <boto3.dynamodb.conditions.Or object at 0x2044157a1>, type: <class 'boto3.dynamodb.conditions.Or'>. valid types: <class 'str'>
我使用的是boto3版本1.21.40。我已经参考了文档here,但仍然无法找出我的代码有什么问题。
import boto3
from boto3.dynamodb.conditions import Attr
client = boto3.client("dynamodb")
example = {
"id": {"S": "12345"},
"name": {"S": "foo"}
}
client.put_item(
TableName="foo",
Item=example,
ReturnValues="NONE",
ConditionExpression=(Attr("name").not_exists() | Attr("name").eq(example.get("name")))
)
1条答案
按热度按时间s3fp2yjn1#
使用的条件属于Table client,您使用的是低级客户端。
表客户端
ConditionExpression(condition from boto3.dynamodb.conditions.Attr method)-
属性必须满足的条件。《DynamoDB参考指南》中列出了有效条件。
底层客户端
String s(String s)
条件PutItem操作成功所必须满足的条件。
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html