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'}

我有一个带有 id 的简单表格测试

我正在尝试将 id 插入到具有字符串数据类型的表中。主分区键是 id(string)

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

 table.put_item(data=item_data)

我收到上面提到的错误。有什么建议么?

4

2 回答 2

0

DynamoDB 中表的哈希键不能是MAP. 您有一个test使用哈希键id作为字符串定义的表。错误说密钥应该是字符串。此外,无需像这样指定。您可以只为 String 提供双引号中的值。

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

添加 MAP 数据类型的示例代码:-

“quid” - 是定义为 String 的表的哈希键

“信息” - 在 DynamoDB 表中添加为 MAP

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

response = table.put_item(
   Item=jsonString
)

输出:-

请参考下面的截图。“info”属性已作为 MAP 添加到 DynamoDB 表中。

在此处输入图像描述

于 2016-11-23T17:43:49.787 回答
0

我认为您使用了错误的语法

看看http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.Python.03.html#GettingStarted.Python.03.01

你应该尝试类似:

response = table.put_item(
   Item={
        'id': '4343',
    }
)
于 2016-11-22T14:59:07.770 回答