Dynamodb boto3条件更新



我正在更新dynamodb中的一个计数器,它运行良好,但我也想根据该值进行额外的更新。

response=table.update_item(
Key={
"record_key":record_key_val,
"record_type":f"REPROC|{assignment_id}"
},
UpdateExpression="""
SET  #attempt = #attempt + :val,
#last_status_code = :last_status_code
""",
ExpressionAttributeNames={
"#attempt": "attempt",
"#last_status_code" : "last_status_code"
},
ExpressionAttributeValues={
":val": 1,
":last_status_code": last_status_code
},
ReturnValues='UPDATED_NEW',
)  

但我想在更新中添加这个逻辑太

我有属性";"状态";具有值RETRY,并且希望在尝试>10.

所以我认为我需要的是ExpressionAttributeValues来具有条件逻辑。能做到吗?

您将无法在对update_item的单个调用中实现这种类型的查询逻辑。

可以指定一个ConditionExpression,以防止attempt字段的增量超过10。

table.update_item (
// your update code 
ConditionExpession = "#attempt <= 10"
)

否则,您可以利用来自更新调用的ReturnValues,它将告诉您attempt属性的新值。如果attempt的值等于10,则应用程序可以有条件地发出另一个更新调用来设置status字段。

最新更新