dynamodb条件付き更新アイテム(クライアント)

Dec 09 2020

私は更新アイテムのこのサンプルを参照しています: https://stackoverflow.com/a/62030403/13967222。


    for key, val in body.items():
        update_expression.append(f" {key} = :{key},")
        update_values[f":{key}"] = val

    return "".join(update_expression)[:-1], update_values

私は同じことを達成しようとしていますが、dynamodbクライアントを使用しています。

dynamodbクライアントを使用して値が利用可能かどうかのチェックを追加する方法はありますか?

回答

1 FireNero Dec 09 2020 at 17:58

ConditionExpressionそのようなリクエストにパラメータを渡して、キー属性がすでに存在するかどうかを確認できます(参照している回答の応答に基づいて):

table.update_item(
        Key={'uuid':str(uuid)},
        UpdateExpression=a,
        ExpressionAttributeValues=dict(v),
        ConditionExpression="attribute_not_exists(uuid)"
        )

書き込みは、がConditionExpression返された場合にのみ実行されますTrue。指定された属性が存在しない場合にattribute_not_exists返さTrueれるDynamoDb関数です。attribute_exists逆の結果を出す機能もあります。公式ドキュメントのDDB条件関数の詳細

また、ここのドキュメントで条件付き書き込みのPythonの例を確認できます