我正在尝试更新我的简单数据库中的计数器(一个键,一个数值)。原子计数器似乎是自然的解决方案,但我需要线程安全更新,即我需要确保更新不会相互干扰。
这个答案似乎表明我需要在执行实际写入之前仔细检查数据是否被另一个更新修改。
我的问题是,如何在 a 中引用 db 中的当前值ConditionExpression
?假设table
是dynamodb.Table
对象(Python API),这是我编写的代码update_item
:
table.update_item(
Key={
'key': my_key
},
UpdateExpression="set my_value = my_value + :inc",
ConditionExpression="my_value = ?????" # should be value in the db now
ExpressionAttributeValues={
':inc': my_increment,
},
ReturnValues="UPDATED_NEW"
)