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

如何在DynamoDB中使用Batch Writer写入String Set类型数据?

问题

我用boto3调用put_item向DynamoDB写入数据时,用带类型标注的格式可以正常存储String Set类型字段:

my_list = ["abc", "efg"]
item = {
   "pk" : {"S": "2308ryfoif"}, 
   "some_list" : {"SS" : my_list}
}

现在想改用Batch Writer批量写入,知道批量操作可以不用指定数据类型,比如:

dynamodb_table = boto3.resource('dynamodb').Table('example')
with dynamodb_table.batch_writer() as batch:
    for i in items_list:
        batch.put_item(Item=i)

但如果直接传入普通列表:

item = {
   "pk" : "2308ryfoif", 
   "some_list" : my_list
}

这个列表会被转成DynamoDB的List类型,请问怎么在批量写入时把它存成String Set类型?

解决方案

有两种可行的方式:

方式一:用Python集合(set)替代列表

boto3会自动把Python的set类型映射为DynamoDB的String Set(SS)类型,只需要把你的列表转换成集合即可:

my_set = {"abc", "efg"}  # 直接定义集合,或者用`set(my_list)`转换现有列表
item = {
   "pk" : "2308ryfoif", 
   "some_list" : my_set
}

# 批量写入代码
dynamodb_table = boto3.resource('dynamodb').Table('example')
with dynamodb_table.batch_writer() as batch:
    batch.put_item(Item=item)

方式二:保留带类型标注的格式

Batch Writer的put_item方法完全支持单个put_item的带类型标注格式,直接沿用原来的写法就行:

my_list = ["abc", "efg"]
item = {
   "pk" : {"S": "2308ryfoif"}, 
   "some_list" : {"SS" : my_list}
}

# 批量写入代码
dynamodb_table = boto3.resource('dynamodb').Table('example')
with dynamodb_table.batch_writer() as batch:
    batch.put_item(Item=item)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:56:08