如何解决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后将其更新为EXPIRE。
所以我认为我需要的是ExpressionAttributeValues以具有条件逻辑。能做到吗?
解决方法
您将无法通过一次调用update_item
来实现这种查询逻辑。
您可以 做的是指定一个ConditionExpression,以防止您的attempt
字段超过10。
table.update_item (
// your update code
ConditionExpession = "#attempt <= 10"
)
否则,您可以利用来自更新调用的ReturnValues
,它将告诉您attempt
属性的新值。如果status
的值等于10,则您的应用程序可以有条件地发出另一个更新调用以设置attempt
字段。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。