# 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` --- Python object serialization
  - 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
  - Command-line interface
- `copyreg` --- Register `pickle` support functions
  - Exemple
- `shelve` --- Python object persistence
  - Limites
  - Exemple
- `marshal` --- Internal Python object serialization
- `dbm` --- Interfaces to Unix "databases"
  - `dbm.sqlite3` --- SQLite backend for dbm
  - `dbm.gnu` --- GNU database manager
  - `dbm.ndbm` --- New Database Manager
  - `dbm.dumb` --- Portable DBM implementation
- `sqlite3` — Interface DB-API 2.0 pour bases de données SQLite
  - Tutoriel
  - Références
    - Fonctions du module
    - Fonctions et constantes du module
    - Connection objects
    - Cursor objects
    - Row objects
    - Blob objects
    - PrepareProtocol objects
    - Exceptions
    - SQLite and Python types
    - Default adapters and converters (deprecated)
    - Command-line interface
  - How-to guides
    - How to use placeholders to bind values in SQL queries
    - How to adapt custom Python types to SQLite values
      - How to write adaptable objects
      - How to register adapter callables
    - How to convert SQLite values to custom Python types
    - Adapter and converter recipes
    - How to use connection shortcut methods
    - How to use the connection context manager
    - How to work with SQLite URIs
    - How to create and use row factories
    - How to handle non-UTF-8 text encodings
  - Explanation
    - Transaction control
      - Transaction control via the `autocommit` attribute
      - Transaction control via the `isolation_level` attribute