# Persistance des données

Les modules décrits dans ce chapitre permettent de stocker des données Python de manière persistante typiquement sur disque. Les modules `pickle` et `marshal` peuvent transformer n'importe quel type Python en une séquence d'octets, puis recréer les objets depuis ces octets. Les différents modules du paquet dbm gèrent une catégorie de formats de fichier basée sur des hach, stockant des correspondances entre chaînes de caractères.

La liste des modules documentés dans ce chapitre est :

- `pickle` --- Module de sérialisation d'objets Python
  - Relations aux autres modules python
    - Comparaison avec `marshal`
    - Comparaison avec `json`
  - Format du flux de données
  - Interface du module
  - Quels objets sont sérialisables ?
  - Sérialisation des instances d'une classe
    - Persistance d'objets externes
    - Tables de distribution
    - Traitement des objets à état
  - Réduction personnalisée pour les types, fonctions et autres objets
  - Tampons hors-bande
    - API des producteurs
    - API des consommateurs
    - Exemple
  - Restriction des noms dans l'espace de nommage global
  - Performances
  - Exemples
- `copyreg` — Enregistre les fonctions support de `pickle`
  - Exemple
- `shelve` — Objet Python persistant
  - Limites
  - Exemple
- `marshal` — Sérialisation interne des objets Python
- `dbm` --- Interfaces to Unix "databases"
  - `dbm.gnu` --- GNU's reinterpretation of dbm
  - `dbm.ndbm` --- Interface based on ndbm
  - `dbm.dumb` --- Portable DBM implementation
- `sqlite3` — Interface DB-API 2.0 pour bases de données SQLite
  - Fonctions et constantes du module
  - Objets de connexions
  - Cursor Objects
  - Row Objects
  - Exceptions
  - SQLite and Python types
    - Introduction
    - Using adapters to store additional Python types in SQLite databases
      - Letting your object adapt itself
      - Registering an adapter callable
    - Converting SQLite values to custom Python types
    - Default adapters and converters
  - Controlling Transactions
  - Using `sqlite3` efficiently
    - Using shortcut methods
    - Accessing columns by name instead of by index
    - Using the connection as a context manager