推奨KeyConditionExpressionを使用して、AWS Boto3を使用してDynamoDBにハッシュキーと範囲キーを同時に照会するのに問題があります。私は、クエリの例を添付していますBoto3でハッシュキーと範囲キーを使用してDynamoDBを照会
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)
私は次のスキームを持つテーブルに対してこれを実行すると:
Table Name: TABLE_NAME
Primary Hash Key: hash_key (String)
Primary Range Key: range_key (Number)
私は次のエラーを取得すると、私は理由を理解することはできません。
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
を
私の理解から、タイプMはマップまたは辞書タイプであり、タイプNでタイプNでレンジ・キーのテーブル・スキームと一致しています。誰かがこのエラーが起こっている理由を説明できる場合、またはこのエラーがなぜ発生するのか説明できない場合でも同じクエリを実行する別の方法にもオープンしています。
を役に立てば幸いあなたのコードに何が間違っているのか分かりましたか?私は同様の問題に遭遇しています。 – tayfun