# 12. 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 :

- 12.1. `pickle` — Module de sérialisation d’objets Python
  - 12.1.1. Relations aux autres modules python
    - 12.1.1.1. Comparaison avec `marshal`
    - 12.1.1.2. Comparison with `json`
  - 12.1.2. Data stream format
  - 12.1.3. Module Interface
  - 12.1.4. What can be pickled and unpickled?
  - 12.1.5. Pickling Class Instances
    - 12.1.5.1. Persistence of External Objects
    - 12.1.5.2. Dispatch Tables
    - 12.1.5.3. Handling Stateful Objects
  - 12.1.6. Restricting Globals
  - 12.1.7. Performances
  - 12.1.8. Exemples
- 12.2. `copyreg` — Enregistre les fonctions support de `pickle`
  - 12.2.1. Exemple
- 12.3. `shelve` — Objet Python persistant
  - 12.3.1. Limites
  - 12.3.2. Exemple
- 12.4. `marshal` — Sérialisation interne des objets Python
- 12.5. `dbm` — Interfaces to Unix « databases »
  - 12.5.1. `dbm.gnu` — GNU’s reinterpretation of dbm
  - 12.5.2. `dbm.ndbm` — Interface based on ndbm
  - 12.5.3. `dbm.dumb` — Portable DBM implementation
- 12.6. `sqlite3` — Interface DB-API 2.0 pour bases de données SQLite
  - 12.6.1. Fonctions et constantes du module
  - 12.6.2. Objets de connexions
  - 12.6.3. Cursor Objects
  - 12.6.4. Row Objects
  - 12.6.5. Exceptions
  - 12.6.6. SQLite and Python types
    - 12.6.6.1. Introduction
    - 12.6.6.2. Using adapters to store additional Python types in SQLite databases
      - 12.6.6.2.1. Letting your object adapt itself
      - 12.6.6.2.2. Registering an adapter callable
    - 12.6.6.3. Converting SQLite values to custom Python types
    - 12.6.6.4. Default adapters and converters
  - 12.6.7. Controlling Transactions
  - 12.6.8. Using `sqlite3` efficiently
    - 12.6.8.1. Using shortcut methods
    - 12.6.8.2. Accessing columns by name instead of by index
    - 12.6.8.3. Using the connection as a context manager
  - 12.6.9. Common issues
    - 12.6.9.1. Fils d’exécution