首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DynamoDB和Boto3操作中的BatchGetItem错误:“提供的键元素与模式不匹配”

DynamoDB和Boto3操作中的BatchGetItem错误:“提供的键元素与模式不匹配”
EN

Stack Overflow用户
提问于 2018-07-31 01:08:48
回答 2查看 4.3K关注 0票数 4

我对Boto3 3/DynamoDB BatchGetItem操作有困难。我将非常感谢任何帮助或指导!我对python/aws非常陌生,如果这是个新手问题的话,很抱歉。

当我执行该操作时,会得到以下错误:

代码语言:javascript
复制
botocore.exceptions.ClientError: An error occurred (ValidationException) when calling the BatchGetItem operation: The provided key element does not match the schema

这是我的代码:

代码语言:javascript
复制
import boto3
dynamodb = boto3.resource('dynamodb', region_name='us-west-2')
response = dynamodb.batch_get_item(
    RequestItems={
        'test': {
            'Keys': [
                {
                    'item_ID': {
                        'S': '1'
                    }
                },
                {
                    'item_ID': {
                        'S': '2'
                    }
                }
            ],
            'ProjectionExpression': 'item_ID, color',
        }
    }
)

这是表中物品的屏幕盖.

ID和它是一个‘字符串’

以下是完整的错误消息:

代码语言:javascript
复制
Traceback (most recent call last):
File "C:/Users/Henry Miller/PycharmProjects/bioinformatics_webapp/get_items.py", line 18, in <module>
'ProjectionExpression': 'item_ID, color',
File "C:\Users\Henry Miller\PycharmProjects\bioinformatics_webapp\venv\lib\site-packages\boto3\resources\factory.py", line 520, in do_action
response = action(self, *args, **kwargs)
File "C:\Users\Henry Miller\PycharmProjects\bioinformatics_webapp\venv\lib\site-packages\boto3\resources\action.py", line 83, in __call__
response = getattr(parent.meta.client, operation_name)(**params)
File "C:\Users\Henry Miller\PycharmProjects\bioinformatics_webapp\venv\lib\site-packages\botocore\client.py", line 314, in _api_call
return self._make_api_call(operation_name, kwargs)
File "C:\Users\Henry Miller\PycharmProjects\bioinformatics_webapp\venv\lib\site-packages\botocore\client.py", line 612, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (ValidationException) when calling the BatchGetItem operation: The provided key element does not match the schema
EN

回答 2

Stack Overflow用户

发布于 2018-07-31 04:17:50

在这里回答我自己的问题。但是事实证明,您需要使用boto3.client而不是boto3.resouce。以下是工作的更新代码:

代码语言:javascript
复制
import boto3
dynamodb = boto3.resource('dynamodb', region_name='us-west-2')
client = boto3.client('dynamodb', region_name='us-west-2')
response = client.batch_get_item(
    RequestItems={
        'test': {
            'Keys': [
                {
                    'item_ID': {
                        'S': '1'
                    }
                },
                {
                    'item_ID': {
                        'S': '2'
                    }
                }
            ],
            'ProjectionExpression': 'item_ID, color',
        }
    }
)

以下是他们的回应:

代码语言:javascript
复制
"C:\Users\Henry Miller\PycharmProjects\bioinformatics_webapp\venv\Scripts\python.exe" "C:/Users/Henry Miller/PycharmProjects/bioinformatics_webapp/get_items.py"
{'Responses': {'test': [{'item_ID': {'S': '1'}, 'color': {'S': 'red'}}, {'item_ID': {'S': '2'}, 'color': {'S': 'blue'}}]}, 'UnprocessedKeys': {}, 'ResponseMetadata': {'RequestId': 'BAH1SHCBHOMRJMJ5AHE7VRTON3VV4KQNSO5AEMVJF66Q9ASUAAJG', 'HTTPStatusCode': 200, 'HTTPHeaders': {'server': 'Server', 'date': 'Tue, 31 Jul 2018 04:15:13 GMT', 'content-type': 'application/x-amz-json-1.0', 'content-length': '130', 'connection': 'keep-alive', 'x-amzn-requestid': 'BAH1SHCBHOMRJMJ5AHE7VRTON3VV4KQNSO5AEMVJF66Q9ASUAAJG', 'x-amz-crc32': '1917096114'}, 'RetryAttempts': 0}}

Process finished with exit code 0
票数 6
EN

Stack Overflow用户

发布于 2020-07-15 00:31:04

您也可以使用but 3资源版本,但在这种情况下不要传递键的类型。您的代码应该如下所示:

代码语言:javascript
复制
import boto3
dynamodb = boto3.resource('dynamodb')
response = dynamodb.batch_get_item(
    RequestItems={
        'test': {
            'Keys': [
                {'item_ID': 'ID1_value'},
                {'item_ID': 'ID2_value'}
            ]
        }
    }
)

这里有一个关于GitHub的完整的工作示例:batching.py

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51604162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档