sno*_*uis 1 amazon-dynamodb boto3
我正在尝试使用乐观锁定将项目更新插入到 DynamoDB 中。我有更新部分与 a 一起ConditionExpression检查版本。但这会导致保存部分失败,因为ConditionExpression保存是错误的。是否可以编写ConditionExpression以便它能够处理这两种情况?
我的代码:
result = copy.copy(user)
table = get_db_table()
current_version = result.get_version()
result.update_version()
try:
table.put_item(
Item=result.to_table_item(),
ConditionExpression=Attr(result.get_version_key()).eq(current_version)
)
except ClientError as error:
logger.error(
"Saving to db failed with '%s'",
str(error))
# Restore version
result.set_version(current_version)
raise Exception(ErrorCode.DB_SAVE) from error
return result
Run Code Online (Sandbox Code Playgroud)
基本上,您需要先确保该属性存在,然后才能将其进行比较。你的条件表达式字符串应该是
does_not_exist(current_version) or current_version = expected_current_version
Run Code Online (Sandbox Code Playgroud)
使用 Boto3,您可以使用以下命令创建它
Attr(result.get_version_key()).not_exists() | Attr(result.get_version_key().eq(current_version))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2462 次 |
| 最近记录: |