You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用boto3 resource查询含保留字的DynamoDB时遇ValidationException错误

问题解决建议

你的错误源于KeyConditionExpression的写法问题:当使用Key("#pk").eq(":pk")时,:pk被DynamoDB当成了字面量字符串,而非ExpressionAttributeValues中定义的占位符;同时#pk也没有被识别为ExpressionAttributeNames的占位符,导致系统判定你提供的#pk未被使用。

以下两种修复方案任选其一:

方案一:使用字符串形式的条件表达式

直接通过字符串定义KeyConditionExpression,明确关联占位符与映射关系:

get_item = table.query(
    KeyConditionExpression="#pk = :pk",
    ExpressionAttributeNames={"#pk": "PK"},
    ExpressionAttributeValues={":pk": record},
)

方案二:用Key对象直接传值

保留Key对象的写法,但直接传入实际值,无需通过ExpressionAttributeValues映射:

get_item = table.query(
    KeyConditionExpression=Key("#pk").eq(record),
    ExpressionAttributeNames={"#pk": "PK"},
)

另外注意:你的代码中使用了json.dumps但未导入json模块,需要在开头添加import json,否则运行时会抛出NameError。

内容的提问来源于stack exchange,提问作者dmomcilo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 19:15:11