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
提供值。