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

Boto3 DynamoDB使用list_append时ExpressionAttributeNames类型错误排查

错误原因及修正方案

核心问题

你收到的错误直接点明了问题本质:ExpressionAttributeNames参数必须是字典(dict)类型,但你写成了集合(set)类型。

看你出错代码里的这行:

ExpressionAttributeNames= {'#res', f'results.{test_id}.trial_area'},

用逗号分隔元素放在大括号里是Python的集合语法,而DynamoDB要求ExpressionAttributeNames是键值对结构的字典——键是你在UpdateExpression里使用的占位符(比如#res),值是对应的实际属性路径。

修正后的代码

把ExpressionAttributeNames改成字典格式即可:

update_resp = table.update_item(Key={
            'client': client,
            'run_date': today
        },
            UpdateExpression=f"SET #res = list_append(#res, :r)",
            ExpressionAttributeNames= {'#res': f'results.{test_id}.trial_area'},
            ExpressionAttributeValues={':r': prior_test_results})

这里将原来的集合{'#res', 'xxx'}调整为字典{'#res': 'xxx'},键#res对应UpdateExpression中的占位符,值是你要操作的完整属性路径,完全符合DynamoDB的参数要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:12:58