Obtenir tous les éléments de DynamoDB en Python (boto3)

Il n'y a pas de « select all » dans DynamoDB — lire une table entière signifie un scan que tu pagines jusqu'au bout. Chaque réponse porte au plus 1 Mo ; le paginateur de scan intégré de boto3 suit LastEvaluatedKey à travers chaque page pour toi.

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

Explication

  • Le paginateur est l'essentiel — un seul appel scan ne renvoie PAS la table ; il renvoie jusqu'à 1 Mo. client.get_paginator("scan") émet des requêtes de suivi (en réinjectant LastEvaluatedKey comme ExclusiveStartKey) jusqu'à épuisement de la table — la boucle qu'on oublie en se demandant pourquoi des éléments sont « manquants ». (Tu le fais à la main ? Continue d'appeler tant que la réponse contient un LastEvaluatedKey.)
  • Mémoireitems contient la table entière. Pour les grandes tables, traite chaque page à l'intérieur de la boucle (écrire dans un fichier, streamer, agréger) au lieu d'accumuler.
  • Plus rapide sur les grandes tables : scan parallèle — passe Segment=i, TotalSegments=N et lance N workers (threads/processus), chacun paginant son propre segment. Même coût total, temps réel bien plus court.
  • Coût — un scan complet lit (et facture) chaque octet de chaque élément, à chaque exécution. ProjectionExpression réduit la réponse, pas la facture ; ne mets pas un scan sur un chemin critique — c'est à ça que servent query et la conception des schémas d'accès.
  • Les éléments reviennent en DynamoDB JSON ({"S": ...}). Tu préfères des types Python natifs ? Utilise l'API resource (table.scan + une boucle LastEvaluatedKey manuelle — l'API resource n'a pas de paginateur).

À faire visuellement

Jeter un œil à une table ne nécessite pas de script : télécharge DynoTable pour parcourir n'importe quelle table dans une grille paginée — il pagine les scans pour toi, aucune boucle à rater. Et avant de scanner-et-payer, le calculateur de tarification DynamoDB montre ce que coûte réellement une lecture complète de ta table.

Exemples liés

References

Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.

Construis cette requête visuellement

Compose cette opération dans le Générateur de requêtes DynamoDB gratuit — condition de clé, filtre, index, Limit, ordre de tri et boucle de pagination — et copie-la en retour comme programme exécutable SDK v3, CLI ou boto3.

Ouvrir le Générateur de requêtes DynamoDB

Travaille avec DynamoDB sans la Console

DynoTable est un client de bureau rapide pour DynamoDB — parcours les tables, exécute des requêtes de style SQL et édite les items en local.