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

如何在Boto3中通过SCAN方法实现DynamoDB分页?分页失效求助

DynamoDB SCAN分页无法获取后续页面的问题修复

你的代码存在两个核心问题,导致始终停留在第一页:

  1. 循环条件语法错误:while 'LastEvaluatedKey' resp 是无效写法,正确的判断逻辑应该是检查'LastEvaluatedKey'是否存在于响应结果中。
  2. 未传递分页起始键:每次循环结束后,没有利用返回的LastEvaluatedKey作为下一次scan请求的ExclusiveStartKey参数,导致DynamoDB一直从初始位置开始扫描,重复返回第一页数据。

修正后的代码如下:

# 发起初始扫描请求
resp = table.scan(AttributesToGet=['name','email'])

# 处理第一页数据
for item in resp.get('Items', []):
    print(f"{item.get('name')}, {item.get('email')}")

# 循环拉取后续分页数据
while 'LastEvaluatedKey' in resp:
    # 用上一页的LastEvaluatedKey指定下一次扫描的起始位置
    resp = table.scan(
        AttributesToGet=['name','email'],
        ExclusiveStartKey=resp['LastEvaluatedKey']
    )
    # 处理当前页数据
    for item in resp.get('Items', []):
        print(f"{item.get('name')}, {item.get('email')}")

额外优化建议:

  • 用for循环直接遍历Items比手动维护count变量更简洁,还能避免索引越界风险。
  • 如果表数据量较大,建议添加Limit参数控制每页返回的数据量,平衡读取效率和资源消耗。

内容的提问来源于stack exchange,提问作者José Erildo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:42:41