Abfrage DynamoDB mit einem hash key und range key mit Boto3

Ich bin, die Probleme mit AWS Boto3 Abfrage DynamoDB mit einem hash key und range key zur gleichen Zeit mit dem empfehlen KeyConditionExpression. Ich habe ein Beispiel angehängt-Abfrage:

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)

Wenn ich diese gegen eine Tabelle mit dem folgenden Schema:

Table Name: TABLE_NAME
Primary Hash Key: hash_key (String)
Primary Range Key: range_key (Number)

Bekomme ich die folgende Fehlermeldung 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 meinem Verständnis der Art M wäre eine map oder dictionary-Typ und ich bin mit einem Typ-N ist eine Zahl Typ und passt meiner Tabelle Schema für die Auswahl-Taste. Wenn jemand erklären könnte, warum dieser Fehler passiert, oder ich bin auch offen für eine andere Art der Ausführung derselben Abfrage, auch wenn Sie nicht erklären können, warum dieser Fehler existiert.

  • Haben Sie herauszufinden, was war falsch mit Ihrem code? Ich bin in einem ähnlichen problem.
Schreibe einen Kommentar