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

如何使用boto3更新DynamoDB中包含字典列表的条目

解决方案

你可以根据实际需求选择以下两种更新方式:

场景1:直接覆盖整个Keys字段(全量替换)

如果不需要保留原有Keys字段的内容,直接用新的字典列表整体替换即可,逻辑和更新普通字段一致:

table = dynamodb_resource.Table("name")
table.update_item(
    TableName=table_name,
    Key={"Id": user["Id"]},
    UpdateExpression="set Name=:n, Keys=:k",
    ExpressionAttributeValues={
        ":n": user["Name"],
        ":k": user["Keys"]
    },
    ReturnValues="UPDATED_NEW"
)

你要写入Item1就传长度为1的Keys列表,要写入Item2就传长度为2的Keys列表,DynamoDB会自动识别嵌套字典的列表结构完成存储。

场景2:向现有Keys列表追加字典元素(增量更新)

如果不想覆盖原有列表,只是新增字典元素,可以用DynamoDB内置的list_append函数实现:

# 要追加的新Key字典
new_key = {'KeyId': '6382920434', 'keyStatus': 'Active'}
table = dynamodb_resource.Table("name")
table.update_item(
    TableName=table_name,
    Key={"Id": user["Id"]},
    UpdateExpression="set Keys = list_append(Keys, :new_key)",
    ExpressionAttributeValues={
        # list_append要求两个入参都是列表类型,所以要把单个字典包成列表传入
        ":new_key": [new_key]
    },
    ReturnValues="UPDATED_NEW"
)
  • 如果需要把新元素插到列表开头,调换list_append的参数顺序即可:list_append(:new_key, Keys)
  • 如果条目初始可能不存在Keys字段,可以提前加初始化逻辑,避免调用list_append时报字段不存在的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:27:00