boto3のDynamoDBにupdate_item
機能を使用しようとしています。update_itemにif_not_existsとlist_appendを組み合わせることは可能ですか
私は今アイテムのリストを更新するのに苦労しています。リストがまだ存在しない場合は新しいリストを作成し、それ以外の場合は既存のリストに追加したいと思います。フォームSET my_list = list_append(my_list, :my_value)
のUpdateExpression
を使用
エラーリストがまだ存在しない場合「を提供式はアイテムに存在しない属性を意味」を返します。
どうすれば私のUpdateExpression
を修正する必要がありますか?
おかげ&よろしく、 ファビアン
ヒントをありがとう:
ADD setName :s
そして表現の値は次のようにすることができ、属性!かなりきちんとした解決策。 – fabian
これは競争条件の対象であるかどうか分かりますか?私はAWSのドキュメントを見ていますが、少なくともPython SDKではロック/トランザクションがないようです。確かに、このコードはDBからリストを読み込み、b:新しい値を追加し、c:はその間に変更された古い値を上書きします。 –
私はドキュメントで直接確認を見つけることができませんが、私は、単一のUpdateItem操作をアトミックにすることを期待しています。私はfaqで見つかった最も近い事柄です - "単一のAPI呼び出しを使用して行の数値属性を増減できます。同様に、セット、リスト、またはマップにアトミックに追加または削除することもできます」https://aws.amazon.com/dynamodb/faqs/ –