# Persistencia de datos

Los módulos descritos en este capítulo soportan el almacenamiento de datos de Python de forma persistente en el disco. Los módulos `pickle` y `marshal` pueden convertir muchos tipos de datos de Python en un flujo de bytes y luego recrear los objetos a partir de los bytes. Los diversos módulos relacionados con DBM admiten una familia de formatos de archivo basados en hash que almacenan un mapeo de cadenas a otras cadenas.

La lista de módulos descritos en este capítulo es:

- `pickle` — Serialización de objetos Python
  - Relación con otros módulos de Python
    - Comparación con `marshal`
    - Comparación con `json`
  - Formato de flujo de datos
  - Interfaz del módulo
  - ¿Qué se puede serializar (pickled) y deserializar (unpickled) con pickle?
  - Pickling de Instancias de clases
    - Persistencia de objetos externos
    - Tablas de despacho
    - Manejo de objetos con estado
  - Reducción personalizada para tipos, funciones y otros objetos
  - Búferes fuera de banda
    - API de proveedor
    - API de consumidor
    - Ejemplo
  - Restricción de globals
  - Performance
  - Ejemplos
- `copyreg` — Registrar funciones de soporte de `pickle`
  - Ejemplo
- `shelve` — Persistencia de objetos de Python
  - Restricciones
  - Ejemplo
- `marshal` — Serialización interna de objetos Python
- `dbm` — Interfaces para «bases de datos» de Unix
  - `dbm.gnu` — GNU database manager
  - `dbm.ndbm` — New Database Manager
  - `dbm.dumb` — Implementación de DBM portátil
- `sqlite3` — DB-API 2.0 interfaz para bases de datos SQLite
  - Tutorial
  - Referencia
    - Funciones del módulo
    - Constantes del módulo
    - Objetos de conexión
    - Objetos cursor
    - Objetos fila (Row)
    - Objetos fila (Row)
    - Objetos PrepareProtocol
    - Excepciones
    - SQLite y tipos de Python
    - Adaptadores y convertidores por defecto
  - Guías prácticas
    - Cómo usar marcadores de posición para vincular valores en consultas SQL
    - Cómo adaptar tipos de Python personalizados a valores de SQLite
      - Cómo escribir objetos adaptables
      - Como registrar un adaptador invocable
    - Como convertir valores SQLite a tipos de Python personalizados
    - Ejemplos para adaptadores y convertidores
    - Cómo utilizar los métodos de acceso directo de conexión
    - Como usar la conexión con un administrador de contexto
    - Como trabajar con URIs SQLite
    - How to create and use row factories
    - How to handle non-UTF-8 text encodings
  - Explicación
    - Control transaccional