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

DynamoDB不使用ExpressionAttributeValues的ConditionExpression语法如何写?

语法规则说明

DynamoDB 的 ConditionExpression 天生支持直接写入字面量,无需强制声明 ExpressionAttributeValues,对应规则如下:

  • 数字类型字面量:直接写阿拉伯数字即可,无需额外包裹,例如= 1、< 99都是合法写法
  • 布尔类型字面量:直接写全小写的true/false
  • 字符串类型字面量:用单引号包裹内容,例如= 'custom_value'
  • 空值判断:直接写NULL即可
报错原因排查

你给出的(#i.body_uncommon = 1)写法本身符合语法规范,触发1相关token错误的常见原因有2个:

  1. 你用#i映射的items属性是列表(List)类型,而非映射(Map)类型,列表属性不能用.访问子字段,需要配合索引访问,例如访问列表第一个元素的对应字段需写成#i[0].body_uncommon
  2. 你使用的boto3版本过低,旧版本对字面量直接写入的支持存在兼容问题,可尝试将数字用括号包裹临时修复,写法为(#i.body_uncommon = (1))
可用代码示例

如果确认items是Map类型,直接使用以下写法即可正常运行:

response = table.update_item(
    Key={
        'ID': "jr_test"
    },
    ConditionExpression='#i.body_uncommon = 1',
    UpdateExpression=final_str,
    ExpressionAttributeNames={
        "#i": "items"
    }
)

内容的提问来源于stack exchange,提问作者Никита Бутин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:54:08