循环调用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
相关产品推荐
相关产品推荐

