web-dev-qa-db-fra.com

Erreur "L'élément de clé fourni ne correspond pas au schéma" lors de l'obtention d'un élément à partir de DynamoDB

Ceci est le paramètre de clé de partition de table enter image description here

Le contenu de la table enter image description here

Lorsque j'ai essayé d'obtenir un élément de la table, il affiche cette erreur

botocore.exceptions.ClientError: une erreur s'est produite (ValidationException) lors de l'appel de l'opération GetItem: l'élément clé fourni ne correspond pas au schéma

C'est mon code

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('testDynamodb')
response = table.get_item(Key={'userId': "user2873"})
item = response['Item']
print(item)

Des idées? Merci.

21
Keoros

Votre schéma de table a une clé de hachage et une clé de tri définies. Lorsque vous utilisez DynamoDB GetItem, vous devez fournir les deux. Voici un extrait de documentation

Pour la clé primaire, vous devez fournir tous les attributs. Par exemple, avec une clé primaire simple, vous devez uniquement fournir une valeur pour la clé de partition. Pour une clé primaire composite, vous devez fournir des valeurs pour la clé de partition et la clé de tri.

Donc, étant donné votre exemple, voici à quoi devraient ressembler les paramètres get_item:

response = table.get_item(Key={'userId': "user2873", 'createdAt': "1489376547"})
35
xtx

Une autre chose qui fonctionne est le code suivant ci-dessous:

from boto3.dynamodb.conditions import Key

result = table.query(
        KeyConditionExpression=Key('userId').eq('user2873')
    )
10
user754036