DynamoDb表get_item

时间:2019-05-06 17:40:02

标签: python-3.x amazon-web-services amazon-dynamodb boto3

我的dynamodb表中有以下元数据

{'num_items': 5, 'primary_key_name': {'AttributeName': 'report_name', 'KeyType': 'HASH'}

我具有boto3文档中的以下功能

def read_table_item(table_name, pk_name, pk_value):
    """
    Return item read by primary key.
    """
    dynamodb_resource = resource('dynamodb', region_name='us-west-2')
    table = dynamodb_resource.Table(table_name)
    response = table.get_item(Key={pk_name: pk_value})

    return response

我在构造pk_namepk_value时遇到了问题

我对如何传递主键来获取我的物品感到困惑。

我得到的错误是

botocore.exceptions.ClientError: An error occurred (ValidationException) when calling the GetItem operation: The provided key element does not match the schema

我目前正这样传递pk_key

pk_name = {'AttributeName': 'report_name', 'KeyType': 'HASH'}
pk_value = "Test Report"

2 个答案:

答案 0 :(得分:1)

您不必使用“ AttributeName”或“ KeyType”。

它应该像这样:

Key={ 'report_name': "Test Report" }

以下是有关操作方法的示例:

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.Python.03.html#GettingStarted.Python.03.02

答案 1 :(得分:0)

您必须根据架构指定pk_value的类型,因此您的请求应如下所示:

response = table.get_item(Key={pk_name:{'S':str(pk_value)}})