gpt4 book ai didi

python - DynamoDb 安全更新

转载 作者:行者123 更新时间:2023-12-01 04:09:32 25 4
gpt4 key购买 nike

我正在尝试更新我的简单数据库中的计数器(一个键,一个数值)。 Atomic counters似乎是自然的解决方案,但我需要线程安全的更新,即我需要确保更新不会相互干扰。

This answer似乎建议我需要在执行实际写入之前仔细检查数据是否未被其他更新修改。

我的问题是,如何在 ConditionExpression 中引用数据库中的当前值?假设 tabledynamodb.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"
)

最佳答案

如果您只想使用原子计数器,则不需要条件。您链接的答案只是引用文档(您也链接了该文档),该文档指出在一些极其重要的情况下,例如增加银行帐户余额,如果您不完全确定第一次尝试,您将需要使用条件表达式增量成功。例如,如果您尝试增加该值并在收到 DynamoDB 响应之前丢失了网络连接。在这种情况下,您无法确定是否成功,并且需要根据条件重试。

您声明您只需要线程安全更新,原子计数器无需使用条件表达式即可提供该更新。

关于python - DynamoDb 安全更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35142553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com