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

读取CSV全部值存入Python字典、使用DynamoDB的batch_writer()问题求助

问题1:CSV读取存入Python字典异常排查
  • 优先使用Python标准库csv完成读取,逻辑更可控,避免第三方库的默认配置导致结果不符合预期,标准写法参考:
import csv

# 存储结果的字典
csv_dict = {}

with open("你的文件路径.csv", "r", encoding="utf-8") as f:
    # 如果CSV没有表头,需要传入field_names参数指定列名,例如field_names=["id", "name", "age"]
    reader = csv.DictReader(f)
    for row in reader:
        # 示例:以每行的id字段作为外层字典的key,整行数据作为value
        row_key = row.pop("id")
        csv_dict[row_key] = row
  • 常见异常排查点:
    • 编码不匹配:如果CSV是Excel导出的GBK编码,需要将encoding参数改为gbk,避免乱码导致key/值错乱
    • 重复key冲突:如果外层字典的key存在重复,后读取的行数据会直接覆盖之前的内容,建议加重复key校验逻辑
    • 空值处理:默认csv.DictReader会把空单元格返回为空字符串,如有需要可自行增加逻辑转为None或者指定默认值
问题2:AWS DynamoDB batch_writer() 正确实现方案
  • batch_writer()是boto3封装的批量操作工具,会自动处理25条/批的拆分、失败重试、错误去重等逻辑,不需要手动处理批大小限制,标准实现如下:
import boto3

# 初始化DynamoDB资源,注意提前配置好AWS凭证(环境变量/配置文件/EC2 IAM角色均可)
dynamodb = boto3.resource("dynamodb")
table = dynamodb.Table("你的表名")

# 批量写入示例
with table.batch_writer() as batch:
    # 遍历你要写入的所有条目
    for item in your_item_list:
        # 每个item必须包含表定义的全部主键字段,字段类型要和表定义匹配
        batch.put_item(Item=item)
  • 注意事项:
    • 单条条目大小不能超过400KB,超出后batch_writer()会抛出异常
    • 如需批量删除,将put_item替换为delete_item,传入Key={"主键字段名": "主键值"}即可
    • 写入前确认表的WCU(写入容量单元)配置,吞吐量不足会触发自动重试,大量写入建议先开启动态扩容或者临时调整WCU配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:15:02