web-dev-qa-db-ja.com

複数の値を更新するBoto3

boto3ドキュメントでは、アイテムの更新は次の例で説明されています。

table.update_item(
    Key={
        'username': 'janedoe',
        'last_name': 'Doe'
    },
    UpdateExpression='SET age = :val1',
    ExpressionAttributeValues={
        ':val1': 26
    }
)

しかし、アイテムのいくつかの値を更新したい場合はどうすればよいですか?これに関する情報は見つかりませんでした。誰か助けてもらえますか?ありがとうございました!

編集:

OK、それはこのように機能しているようですが、これが正しい方法であるかどうか誰でも確認できます。私がここで完全に間違っていることをしていないことを確認するためだけに。

table.update_item(
                    Key={
                        'id': item['id']
                    },
                    UpdateExpression='SET value1 = :val1, value2 = :val2',
                    ExpressionAttributeValues={
                        ':val1': someValue1,
                        ':val2': someValue2
                    }
                )

ありがとう!

17
weka1

はい、それが方法です。 ここ のように、多くのアクションでさえ単一の式で実行できます。例:1つの式に複数の「PUT」と「DELETE」。

Snapshot showing the example from document

10
Venkatesh

これを見つけた他の人のために、ExpressionAttributeValuesのような奇妙なboto3のものを支援するために使用できるライブラリがあります。このようにして、通常の開発者/人間による呼び出しを行うことができます。

https://github.com/rayepps/dynamof

db(update(
  table_name='users',
  key={ 'id': item['id'] },
  attributes={
      'age': 26,
      'name': 'Carl'
  }))

免責事項:私が書いた

1
rayepps