# 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