使Dynamodb update_item幂等-列表属性



我想使我的update_item操作幂等。我有一个list类型的属性,我想只在list不存在的情况下添加一个元素。我想我需要使用:ConditionExpression

uptd = 'SET status_pedido_disponiveis = list_append(if_not_exists(status_pedido_disponiveis, :empty_list), :my_value)'
attr={ ":my_value": {"L": [{"S": xml }]}, ":empty_list":{"L": [] } }
self.dynamodb.update_item(TableName=self.table_name, Key={'order_id':{'S': order_id}}, 
                          UpdateExpression=uptd, 
                          ExpressionAttributeValues=attr
                          )

解决方案如下:

uptd = 'SET status_pedido_disponiveis = list_append(if_not_exists(status_pedido_disponiveis, :empty_list), :my_value)'
attr={ ":my_value": {"L": [{"S": xml }]}, ":empty_list":{"L": [] }, ':xml_content': {"S": xml } }
self.dynamodb.update_item(TableName=self.table_name, Key={'order_id':{'S': order_id}}, 
                          UpdateExpression=uptd, 
                          ExpressionAttributeValues=attr,
                          ConditionExpression = "not contains (status_pedido_disponiveis, :xml_content)"
                          )

相关内容

  • 没有找到相关文章

最新更新