Ottenere tutti gli Item da DynamoDB in Python (boto3)

In DynamoDB non esiste un "select all" — leggere un'intera tabella significa uno scan che pagini fino alla fine. Ogni risposta trasporta al massimo 1 MB; il paginator di scan integrato di boto3 segue LastEvaluatedKey su ogni pagina per te.

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")

Spiegazione

  • Il paginator è il punto centrale — una singola chiamata scan NON restituisce la tabella; restituisce fino a 1 MB. client.get_paginator("scan") invia richieste successive (reimmettendo LastEvaluatedKey come ExclusiveStartKey) finché la tabella non è esaurita — il ciclo che si dimentica quando ci si chiede perché gli Item "mancano". (Lo fai a mano? Continua a chiamare finché la risposta contiene un LastEvaluatedKey.)
  • Memoriaitems contiene l'intera tabella. Per tabelle grandi, elabora ogni page all'interno del ciclo (scrivi su file, stream, aggrega) invece di accumulare.
  • Più veloce sulle tabelle grandi: scan parallelo — passa Segment=i, TotalSegments=N ed esegui N worker (thread/processi), ciascuno che pagina il proprio segmento. Stesso costo totale, tempo reale molto inferiore.
  • Costo — uno scan completo legge (e fattura) ogni byte di ogni Item, ogni volta che lo esegui. ProjectionExpression riduce la risposta, non il costo; non mettere uno scan su un percorso critico — a questo servono query e la progettazione dei pattern di accesso.
  • Gli Item vengono restituiti in DynamoDB JSON ({"S": ...}). Preferisci i tipi nativi di Python? Usa l'API resource (table.scan + un ciclo manuale su LastEvaluatedKey — l'API resource non ha un paginator).

Fallo visivamente

Dare un'occhiata a una tabella non richiede uno script: scarica DynoTable per sfogliare qualsiasi tabella in una griglia paginata — pagina gli scan per te, senza cicli da sbagliare. E prima di fare scan-e-pagare, il calcolatore dei prezzi DynamoDB mostra quanto costa davvero una lettura completa della tua tabella.

Esempi correlati

References

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.

Costruisci questa richiesta visivamente

Componi questa operazione nel Generatore di query DynamoDB gratuito — condizione di chiave, filtro, indice, Limit, ordine di ordinamento e un loop di paginazione — e copiala come programma eseguibile per SDK v3, CLI o boto3.

Apri il Generatore di query DynamoDB

Lavora con DynamoDB senza la Console

DynoTable è un client desktop veloce per DynamoDB — sfoglia le tabelle, esegui query in stile SQL e modifica gli Item localmente.