0
boto.dynamodb2.exceptions.ValidationException: ValidationException: 400 Bad Request 
{'__type': 'com.amazon.coral.validate#ValidationException', 'message': 'One or more parameter values were invalid: Type mismatch for key restoreid expected: S actual: M'} 

У меня есть простой тест таблицы с идентификаторомпитон ошибка бото при вставке данных dynamodb

Все, что я пытаюсь сделать в вставки идентификатора в таблице с типом данных String. Ключ первичной перегородки - id (строка)

table = Table("test") 
stringjson="{\"id\": {\"S\": \"4343\"}}" 
item_data = json.loads(stringjson) 

table.put_item(data=item_data) 

Я получаю ошибку, упомянутую выше. Какие-либо предложения?

ответ

0

Я думаю, что вы используете неправильный синтаксис

посмотреть на http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.Python.03.html#GettingStarted.Python.03.01

вы должны попробовать что-то вроде:

response = table.put_item(
    Item={ 
     'id': '4343', 
    } 
) 
+0

В конце концов я хочу вставить карту в таблицу. –

+0

a Карта? или предмет? –

+0

Карта как элемент. Подобно этому вопросу http://stackoverflow.com/questions/30419684/dynamodb-boto-put-item-of-type-map-m –

0

Хэш ключа таблицы в DynamoDB не может быть MAP. У вас есть таблица test с ключом хэша id как строка. Ошибка говорит, что ключ должен быть строкой. Кроме того, нет необходимости указывать так. Вы можете просто указать значение в двойных кавычках для String.

{\"S\": \"4343\"} 

Пример кода для добавления типа MAP данных: -

"услуга" - это хэш-ключ таблицы определяется как строки

"Информация", - добавляется в MAP в DynamoDB таблице

jsonString = {"quid": "102", "info": { "plot": "Nothing happens at all.", "rating": "AA"} } 

response = table.put_item(
    Item=jsonString 
) 

Выход: -

См. Снимок экрана ниже. Атрибут «info» был добавлен как MAP в таблицу DynamoDB.

enter image description here