Python: Boto3, указание имен атрибутов для операции delete_item - PullRequest
1 голос
/ 18 февраля 2020

Следующий код дает мне ошибку:

dynamo_table.delete_item(Key={'segmentUuid': segment_id, 'value': value})

Ошибка:

botocore.exceptions.ClientError: Произошла ошибка (ValidationException) при вызове операции DeleteItem: при условии, что ключевой элемент не соответствует схеме

После некоторого поиска я обнаружил, что проблема заключается в том, что столбец ключа сортировки называется value, который является зарезервированным ключевым словом в Dynamo. К сожалению, boto3, похоже, не позволяет мне указать это с помощью аргумента ExpressionAttributeName, поскольку он не поддерживается для операции Key in delete_item. Может кто-нибудь предложить, что я могу сделать, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 18 февраля 2020

value зарезервированное слово делает его запутанным, но эта ошибка должна была быть

"Attribute name is a reserved keyword; reserved keyword: value"

в этом случае.

Ваша ошибка возникает, когда вы пытаетесь сопоставить элемент по полям, которые не являются ключами хеш / сортировки. Таким образом, чтобы этот конкретный delete_item работал, вам нужен GSI с

сегментUuid → ха sh ключ

значение → ключ сортировки

...