我在使用AWS Boto3使用推荐的KeyConditionExpression同时使用散列键和范围键查询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是一个数字类型,并匹配我的表格方案的范围键。如果有人可以解释为什么会出现这种错误,或者我也打算以不同的方式完成相同的查询,即使您无法解释存在此错误的原因。
你知道你的代码有什么问题吗?我遇到了类似的问题。 – tayfun