# 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