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

循环调用DynamoDB table.put_item导致记录被覆盖的问题求助

问题分析与解决

问题根源

你当前代码里用的put_item方法,在DynamoDB中的作用是创建新条目或完全替换已有同主键的条目。循环时每次只传入pk和单个属性,导致第二次循环会把第一次插入的条目彻底覆盖,最终数据库里只剩最后一次循环插入的属性。另外注意代码里的pk是787,但你期望的是786,需要同步修正。

解决方案1:构建完整条目一次性插入

先把所有键值对整合到同一个字典中,再调用一次put_item,就能让所有属性属于同一个pk条目:

record_data = "orderId:569782152,incBaseFx:1.0"
record_data_list = record_data.split(",")

# 初始化包含目标主键的字典
item = {"pk": "786"}

# 拆分键值对并添加到字典
for item_str in record_data_list:
    key, value = item_str.split(":")
    item[key] = value

# 一次性插入完整条目
table.put_item(Item=item)

解决方案2:用update_item增量添加属性

如果需要逐步为同主键条目添加属性(不覆盖已有内容),可以使用update_item配合SET操作,每次仅新增或更新指定属性:

record_data = "orderId:569782152,incBaseFx:1.0"
record_data_list = record_data.split(",")

for item_str in record_data_list:
    key, value = item_str.split(":")
    table.update_item(
        Key={"pk": "786"},
        UpdateExpression=f"SET {key} = :v",
        ExpressionAttributeValues={":v": value}
    )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 18:05:56