Как обновить ключ в DynamodB с Boto3? - PullRequest
0 голосов
/ 10 апреля 2020

Я новичок в DynamoDB и не могу определить таблицу. Я хочу иметь такую ​​таблицу:

item_name, create_date, update_date

, и мне нужно запрашивать и обновлять элементы с указанными c item_name и update_date. Итак, в boto3 я написал

table.update_item(
            Key={
                'item_name': item_name,
                'update_date': 0
            },
            UpdateExpression='SET update_date = :val1',
            ExpressionAttributeValues={
                ':val1': 999999999
            }
        )

и получаю botocore.exceptions.ClientError: An error occurred (ValidationException) when calling the UpdateItem operation: One or more parameter values were invalid: Cannot update attribute update_date. This attribute is part of the key.

В моем определении таблицы у меня item_name в качестве ключа ha sh и update_date в качестве ключа диапазона. Как я собираюсь исправить определение или код, чтобы

  1. Операция обновления прошла успешно.
  2. Могу ли я быстро запросить таблицу по атрибутам item_name и update_date?

1 Ответ

0 голосов
/ 10 апреля 2020

1) Прежде всего updated_date является частью вашего первичного ключа, то есть первичный ключ в DynamodB состоит из двух атрибутов: первичного ключа Ha sh (item_name) и Range (updated_date), и вы не можете использовать первичный ключ.

2) Если вы хотите обновить свойство updated_date, вам следует обновить конфигурацию таблицы и выбрать item_name только в качестве первичного ключа

...