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" --- La reinterpretación de GNU de dbm

  * "dbm.ndbm" --- Interfaz basada en ndbm

  * "dbm.dumb" --- Implementación de DBM portátil

* "sqlite3" --- DB-API 2.0 interfaz para bases de datos SQLite

  * Funciones y constantes del módulo

  * Objetos de conexión

  * Objetos Cursor

  * Objetos Fila (*Row*)

  * Excepciones

  * SQLite y tipos de Python

    * Introducción

    * Usando adaptadores para almacenar tipos adicionales de Python en
      bases de datos SQLite

      * Permitiéndole al objeto auto adaptarse

      * Registrando un adaptador invocable

    * Convertir valores SQLite a tipos de Python personalizados

    * Adaptadores y convertidores por defecto

  * Controlando Transacciones

  * Usando "sqlite3" eficientemente

    * Usando métodos atajo

    * Accediendo a las columnas por el nombre en lugar del índice

    * Usando la conexión como un administrador de contexto
