DynamoDb Table get_item - PullRequest
       10

DynamoDb Table get_item

0 голосов
/ 06 мая 2019

У меня есть следующие метаданные в моей таблице 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_name иpk_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 ]

1 голос
/ 06 мая 2019

Вам не нужно использовать «AttributeName» или «KeyType».

Это должно выглядеть так:

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

Вот пример того, как это сделать:

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

0 голосов
/ 06 мая 2019

Вы должны указать тип pk_value в соответствии со схемой, поэтому ваш запрос должен выглядеть следующим образом:

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