Persistência de Dados
*********************

Os módulos descritos neste capítulo possuem suporte ao armazenamento
de dados do Python em um formato persistente no disco. Os módulos
"pickle" e "marshal" podem transformar muitos tipos de dados do Python
em um fluxo de bytes e então recriar os objetos a partir dos bytes. Os
vários módulos relacionados ao DBM possuem suporte a uma família de
formatos de arquivo baseados em hash que armazenam um mapeamento de
strings para outras strings.

A lista de módulos descritos neste capítulo é:

* "pickle" --- Serialização de objetos Python

  * Relacionamento com outros módulos Python

    * Comparação com "marshal"

    * Comparação com "json"

  * Formato de fluxo de dados

  * Interface do módulo

  * O que pode ser serializado e desserializado com pickle?

  * Serializando com pickle instâncias de classes

    * Persistência de objetos externos

    * Tabelas de despacho

    * Manipulação de objetos com estado

  * Redução personalizada para tipos, funções e outros objetos

  * Buffers fora da banda

    * API de provedor

    * API de consumidor

    * Exemplo

  * Restringindo globais

  * Desempenho

  * Exemplos

* "copyreg" --- Registra funções de suporte "pickle"

  * Exemplo

* "shelve" --- Persistência de objetos Python

  * Restrições

  * Exemplo

* "marshal" --- Serialização interna de objetos Python

* "dbm" --- Interfaces to Unix "databases"

  * "dbm.gnu" --- GNU's reinterpretation of dbm

  * "dbm.ndbm" --- Interface based on ndbm

  * "dbm.dumb" --- Implementação portátil do DBM

* "sqlite3" --- Interface DB-API 2.0 para bancos de dados SQLite

  * Funções e constantes do módulo

  * Objetos de conexão

  * Cursor Objects

  * Row Objects

  * Exceções

  * SQLite and Python types

    * Introdução

    * 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

  * Controlando Transações

  * Using "sqlite3" efficiently

    * Using shortcut methods

    * Accessing columns by name instead of by index

    * Using the connection as a context manager
