Ich habe Probleme mit AWS Boto3, um DynamoDB mit einem Hash-Schlüssel und einem Bereichsschlüssel gleichzeitig mit der Empfehlung KeyConditionExpression abzufragen. Ich habe ein Beispiel Abfrage angehängt:DynamoDB mit einem Hash-Schlüssel und einem Bereichsschlüssel mit Boto3 abfragen
import boto3
from boto3 import dynamodb
from boto3.session import Session
dynamodb_session = Session(aws_access_key_id=AWS_KEY,
aws_secret_access_key=AWS_PASS,
region_name=DYNAMODB_REGION)
dynamodb = dynamodb_session.resource('dynamodb')
table=dynamodb.Table(TABLE_NAME)
request = {
'ExpressionAttributeNames': {
'#n0': 'hash_key',
'#n1': 'range_key'
},
'ExpressionAttributeValues': {
':v0': {'S': MY_HASH_KEY},
':v1': {'N': GT_RANGE_KEY}
},
'KeyConditionExpression': '(#n0 = :v0) AND (#n1 > :v1)',
'TableName': TABLE_NAME
}
response = table.query(**request)
Als ich dies für eine Tabelle mit folgendem Schema ausgeführt:
Table Name: TABLE_NAME
Primary Hash Key: hash_key (String)
Primary Range Key: range_key (Number)
ich folgende Fehlermeldung erhalten, und ich kann nicht verstehen, warum:
ClientError: An error occurred (ValidationException) when calling the Query operation: Invalid KeyConditionExpression: Incorrect operand type for operator or function; operator or function: >, operand type: M
Aus meiner Sicht wäre der Typ M ein Map- oder Dictionary-Typ und ich verwende einen Typ N, der ein Zahlentyp ist und mit meinem Tabellenschema für den Bereichsschlüssel übereinstimmt. Wenn jemand erklären könnte, warum dieser Fehler auftritt, oder ich auch offen bin für eine andere Art, dieselbe Abfrage auszuführen, auch wenn Sie nicht erklären können, warum dieser Fehler vorliegt.
hilft Hast du herausgefunden, was mit deinem Code nicht stimmt? Ich stoße auf ein ähnliches Problem. – tayfun