Amazon dynamodb boto3 dynamodb查询中的KeyConditionExpression无效

Amazon dynamodb boto3 dynamodb查询中的KeyConditionExpression无效,amazon-dynamodb,boto3,Amazon Dynamodb,Boto3,我的桌子是这样的: toHash是我的主分区键,timestamp是排序键 因此,当我执行此代码[用于获取时间戳的反向排序列表时]: 进口boto3 从boto3.dynamodb.conditions导入键Attr client = boto3.client('dynamodb') response = client.query( TableName='logs', Limit=1, ScanIndexForward=False, KeyConditionEx

我的桌子是这样的:

toHash
是我的主分区键,
timestamp
是排序键

因此,当我执行此代码[用于获取时间戳的反向排序列表时]:

进口boto3 从boto3.dynamodb.conditions导入键Attr

client = boto3.client('dynamodb')
response = client.query(
    TableName='logs',
    Limit=1,
    ScanIndexForward=False,
    KeyConditionExpression="toHash = :X",
)
我得到以下错误:

botocore.exceptions.ClientError: An error occurred (ValidationException) when calling the Query operation: Invalid KeyConditionExpression: An expression attribute value used in expression is not defined; attribute value: :X

我做错什么了吗为什么
X
不被视为有效的属性值?

添加
表达式属性值,如下所述:-

response = client.query(
    TableName='logs',
    Limit=1,
    ScanIndexForward=False,
    KeyConditionExpression="toHash = :X",
    ExpressionAttributeValues={":X" : {"S" : "somevalue"}}
)

添加
表达式属性值
,如下所述:-

response = client.query(
    TableName='logs',
    Limit=1,
    ScanIndexForward=False,
    KeyConditionExpression="toHash = :X",
    ExpressionAttributeValues={":X" : {"S" : "somevalue"}}
)

这就是我不再直接使用boto的原因。像这样简单的东西的API是胡说八道@ConcepteQuest是正确的,您需要添加
表达式属性值
。我再也不会把这些事情搞砸了。我用。以下是您的查询示例:

来自boto3导入客户端的

作为make_db导入数据库的源代码
从导入查询开始
client=client('dynamodb',endpoint\u url='http://localstack:4569')
db=make_db(客户机)
数据库(查询)(
表_name='logs',
条件=attr('toHash')。等于('somevalue')
))
dynamof
为您构建
KeyConditionExpression
expressionattributevalue


免责声明:我写了dynamof

这就是我不再直接使用boto的原因。像这样简单的东西的API是胡说八道@ConcepteQuest是正确的,您需要添加
表达式属性值
。我再也不会把这些事情搞砸了。我用。以下是您的查询示例:

来自boto3导入客户端的

作为make_db导入数据库的源代码
从导入查询开始
client=client('dynamodb',endpoint\u url='http://localstack:4569')
db=make_db(客户机)
数据库(查询)(
表_name='logs',
条件=attr('toHash')。等于('somevalue')
))
dynamof
为您构建
KeyConditionExpression
expressionattributevalue


免责声明:我写了一个

你需要向查询提供一个
ExpressionAttributeValues
子句,为查询中的
:X
提供值。你需要向查询提供一个
ExpressionAttributeValues
子句,为查询中的
:X
提供值。