Obtener todos los items de DynamoDB en Python (boto3)

En DynamoDB no existe un "select all" — leer una tabla entera significa un scan que paginas hasta el final. Cada respuesta lleva como máximo 1 MB; el paginador de scan integrado de boto3 sigue LastEvaluatedKey por ti a través de cada página.

Code

import boto3

client = boto3.client("dynamodb")

paginator = client.get_paginator("scan")

items = []
for page in paginator.paginate(TableName="Music"):
    items.extend(page["Items"])

print(f"Table holds {len(items)} items")

Explicación

  • El paginador es lo importante — una única llamada a scan NO devuelve la tabla; devuelve hasta 1 MB. client.get_paginator("scan") emite solicitudes de seguimiento (volviendo a alimentar LastEvaluatedKey como ExclusiveStartKey) hasta agotar la tabla — el bucle que la gente olvida cuando se pregunta por qué "faltan" items. (¿Hacerlo a mano? Sigue llamando mientras la respuesta contenga un LastEvaluatedKey.)
  • Memoriaitems contiene la tabla entera. Para tablas grandes, procesa cada page dentro del bucle (escribir a un archivo, hacer streaming, agregar) en lugar de acumular.
  • Más rápido en tablas grandes: scan en paralelo — pasa Segment=i, TotalSegments=N y ejecuta N workers (hilos/procesos), cada uno paginando su propio segmento. El mismo coste total, mucho menos tiempo de reloj.
  • Coste — un scan completo lee (y factura) cada byte de cada item, cada vez que lo ejecutas. ProjectionExpression reduce la respuesta, no la factura; no pongas un scan en una ruta caliente — para eso están query y el diseño de patrones de acceso.
  • Los items vuelven en DynamoDB JSON ({"S": ...}). ¿Prefieres tipos nativos de Python? Usa la API de recurso (table.scan + un bucle manual de LastEvaluatedKey — la API de recurso no tiene paginador).

Hazlo visualmente

Echar un vistazo a una tabla no necesita un script: descarga DynoTable para explorar cualquier tabla en una cuadrícula paginada — pagina los scans por ti, sin un bucle que equivocar. Y antes de escanear y pagar, la calculadora de precios de DynamoDB muestra lo que realmente cuesta una lectura completa de tu tabla.

Ejemplos relacionados

References

Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.

Construye esta solicitud visualmente

Compón esta operación en el Generador de consultas de DynamoDB gratuito —condición de clave, filtro, índice, Limit, orden de clasificación y un bucle de paginación— y cópiala de vuelta como un programa ejecutable para SDK v3, CLI o boto3.

Abrir el Generador de consultas de DynamoDB

Trabaja con DynamoDB sin la Consola

DynoTable es un cliente de escritorio rápido para DynamoDB: explora tablas, ejecuta consultas estilo SQL y edita Items localmente.