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

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

  * 12.1.1. Relacionamento com outros módulos Python

    * 12.1.1.1. Comparação com "marshal"

    * 12.1.1.2. Comparação com "json"

  * 12.1.2. Formato de fluxo de dados

  * 12.1.3. Interface do módulo

  * 12.1.4. O que pode ser serializado e desserializado com pickle?

  * 12.1.5. Serializando com pickle instâncias de classes

    * 12.1.5.1. Persistência de objetos externos

    * 12.1.5.2. Tabelas de despacho

    * 12.1.5.3. Manipulação de objetos com estado

  * 12.1.6. Restringindo globais

  * 12.1.7. Performance

  * 12.1.8. Exemplos

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

  * 12.2.1. Exemplo

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

  * 12.3.1. Restrições

  * 12.3.2. Exemplo

* 12.4. "marshal" --- Serialização interna de objetos 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" --- DB-API 2.0 interface for SQLite databases

  * 12.6.1. Funções e constantes do módulo

  * 12.6.2. Connection Objects

  * 12.6.3. Cursor Objects

  * 12.6.4. Row Objects

  * 12.6.5. Exceções

  * 12.6.6. SQLite and Python types

    * 12.6.6.1. Introdução

    * 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. Controlando Transações

  * 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. Multithreading
