【问题标题】:"The provided key element does not match the schema" DynamoDB (boto3) error“提供的关键元素与架构不匹配”DynamoDB (boto3) 错误
【发布时间】:2019-11-18 17:24:40
【问题描述】:

我正在尝试使用 boto3 从我的 DynamoDB 中查询项目。

表格如下所示:

DynamoDB Table

我正在运行的代码是:

import boto3

TableName = "lightblue_ble_indication_data"
client = boto3.client('dynamodb')
DB = boto3.resource('dynamodb')

table = DB.Table(TableName)

response = table.get_item(Key={'ble_device_name': "LUMEN18BLE", 'timestamp': "1573742965303"})

response['Item']

我错过了什么?

【问题讨论】:

  • 不幸的是,在您上面显示的表格图像中,不清楚“时间戳”的类型是什么。难道它是一个数字,而不是一个字符串?在您的代码中,您尝试将其作为字符串传递,如果它实际上需要是一个数字,这将是一个错误。
  • 你是对的,它是一个数字!现在工作正常,谢谢!
  • 所以为了后代,我会发布一个答案:-)

标签: python amazon-web-services amazon-dynamodb boto3


【解决方案1】:

错误消息告诉您,您传递的键 {'ble_device_name': "LUMEN18BLE", 'timestamp': "1573742965303"} 与表的架构不匹配 - 即为其定义的键。这可能意味着名称 ble_device_nametimestamp 与此表的实际键属性不匹配,或者您为它们选择的值类型不正确。

您附上的图片证明ble_device_nametimestamp 是正确的关键属性名称,所以这不是问题。它还显示ble_device_name 具有字符串类型,就像您传递它一样。剩下的唯一可能是您为timestamp 传递了一个字符串,而在表中它被声明为一个数字。您只需要在您尝试传递时间戳的值 1573742965303 周围加上引号,一切都会正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    相关资源
    最近更新 更多