Python dynamodb从列表中删除特定项而不发生冲突

Python dynamodb从列表中删除特定项而不发生冲突,python,database,amazon-web-services,nosql,amazon-dynamodb,Python,Database,Amazon Web Services,Nosql,Amazon Dynamodb,我将dynamodb与pythonapi一起使用,并且有一个list属性,列表中包含复杂的数据 我想能够删除一个特定的项目 我找到了一个教程,解释了如何通过索引从列表中删除项目 并发现有关情况的问题 教程和SO问题都展示了如何通过索引从列表中删除一个项,我有一个更具体的情况,两个用户可以同时使用同一个dynamodb表,并且他们都可能试图删除同一个项,当使用索引时,可能会导致如下情况:有一个列表[1,2,3]两个用户希望删除项“1”,并使用删除列表[0],第一个用户删除项1,但现在列表为[2,3

我将dynamodb与pythonapi一起使用,并且有一个list属性,列表中包含复杂的数据

我想能够删除一个特定的项目

我找到了一个教程,解释了如何通过索引从列表中删除项目

并发现有关情况的问题

教程和SO问题都展示了如何通过索引从列表中删除一个项,我有一个更具体的情况,两个用户可以同时使用同一个dynamodb表,并且他们都可能试图删除同一个项,当使用索引时,可能会导致如下情况:有一个列表[1,2,3]两个用户希望删除项“1”,并使用删除列表[0],第一个用户删除项1,但现在列表为[2,3],第二个用户删除项“2”

我发现,在使用dynamodb set数据类型时,可以通过其值删除特定项,但没有可以包含复杂数据的集,只有二进制、str和number,我需要存储类似于:{“att1”:[1,2,3],“att2”:str,“attr3”:{…}和嵌套的内容


如果有人在我之前删除了某个项目,导致我删除了错误的项目,我如何删除该项目而不冒删除另一个项目的风险

我不记得dynamodb是否可以返回现有记录的哈希值

如果没有,您可以尝试将其添加为附加字段,并通过此属性创建一个键 然后可以使用where子句更新对象 差不多

aws dynamodb更新项目\
--表名ProductCatalog\
--键“{“myHash”:{“N”:“125948abcdef1234”}”\
--更新表达式


想法是,如果对象已经被某人更新,哈希值也应该是不同的

我不记得dynamodb是否可以返回现有记录的哈希值

如果没有,您可以尝试将其添加为附加字段,并通过此属性创建一个键 然后可以使用where子句更新对象 差不多

aws dynamodb更新项目\
--表名ProductCatalog\
--键“{“myHash”:{“N”:“125948abcdef1234”}”\
--更新表达式


想法是如果对象已经被某人更新,哈希值也应该不同

这将阻止我更新项目,如果它以任何方式改变,而不仅仅是以定义的方式删除我想要删除的项目。。。这并没有很遗憾地回答这个问题。你是定义哈希算法内容的人:)好吧,那太好了:-)你能更具体地定义它以满足这里的需要吗?添加一个新的属性HashedArrayValue并输入dynamodb每次更新记录时重新计算这个属性,比如:HashedArrayValue=SomeHashCalculator.Calculate(SomeJsonSerializer.Serialize(myNewArrayVersion))?这将阻止我更新的项目,如果它以任何方式改变,不仅在删除我想删除的项目定义的方式。。。这并没有很遗憾地回答这个问题。你是定义哈希算法内容的人:)好吧,那太好了:-)你能更具体地定义它以满足这里的需要吗?添加一个新的属性HashedArrayValue并输入dynamodb每次更新记录时重新计算这个属性,比如:HashedArrayValue=SomeHashCalculator.Calculate(SomeJsonSerializer.Serialize(myNewArrayVersion))?