我的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"
答案 0 :(得分:1)
您不必使用“ AttributeName”或“ KeyType”。
它应该像这样:
Key={ 'report_name': "Test Report" }
以下是有关操作方法的示例:
答案 1 :(得分:0)
您必须根据架构指定pk_value的类型,因此您的请求应如下所示:
response = table.get_item(Key={pk_name:{'S':str(pk_value)}})