# Persistensi Data

Modul yang dijelaskan di dalam bab ini mendukung untuk menyimpan data Python di dalam sebuah bentuk persisten pada disk. Modul `pickle` dan `marshal` bisa mengubah banyak tipe data Python ke sebuah aliran byte dan kemudian membuat ulang objek dari bytenya. Berbagai modul terkait DBM mendukung serangkaian format file berbasis hash yang menyimpan pemetaan string ke string lain.

Daftar modul yang dijelaskan di dalam bab ini adalah:

- `pickle` --- Python object serialization
  - Relationship to other Python modules
    - Comparison with `marshal`
    - Comparison with `json`
  - Data stream format
  - Module Interface
  - What can be pickled and unpickled?
  - Pickling Class Instances
    - Persistence of External Objects
    - Dispatch Tables
    - Handling Stateful Objects
  - Custom Reduction for Types, Functions, and Other Objects
  - Out-of-band Buffers
    - Provider API
    - Consumer API
    - Contoh
  - Restricting Globals
  - Performa
  - Contoh-contoh
  - Command-line interface
- `copyreg` --- Register `pickle` support functions
  - Contoh
- `shelve` --- Python object persistence
  - Restrictions
  - Contoh
  - Pengecualian
- `marshal` --- Internal Python object serialization
- `dbm` --- Interfaces to Unix "databases"
  - `dbm.sqlite3` --- SQLite backend for dbm
  - `dbm.gnu` --- GNU database manager
  - `dbm.ndbm` --- New Database Manager
  - `dbm.dumb` --- Portable DBM implementation
- `sqlite3` --- DB-API 2.0 interface for SQLite databases
  - Tutorial
  - Referensi
    - Module functions
    - Module constants
    - Connection objects
    - Cursor objects
    - Row objects
    - Blob objects
    - PrepareProtocol objects
    - Pengecualian
    - SQLite dan tipe Python
    - Default adapters and converters (deprecated)
    - Command-line interface
  - How-to guides
    - How to use placeholders to bind values in SQL queries
    - How to adapt custom Python types to SQLite values
      - How to write adaptable objects
      - How to register adapter callables
    - How to convert SQLite values to custom Python types
    - Adapter and converter recipes
    - How to use connection shortcut methods
    - How to use the connection context manager
    - How to work with SQLite URIs
    - How to create and use row factories
    - How to handle non-UTF-8 text encodings
  - Explanation
    - Transaction control
      - Transaction control via the `autocommit` attribute
      - Transaction control via the `isolation_level` attribute