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

- 12.1. `pickle` --- Python object serialization
  - 12.1.1. Relationship to other Python modules
    - 12.1.1.1. Comparison with `marshal`
    - 12.1.1.2. Comparison with `json`
  - 12.1.2. Data stream format
  - 12.1.3. Module Interface
  - 12.1.4. What can be pickled and unpickled?
  - 12.1.5. Pickling Class Instances
    - 12.1.5.1. Persistence of External Objects
    - 12.1.5.2. Dispatch Tables
    - 12.1.5.3. Handling Stateful Objects
  - 12.1.6. Restricting Globals
  - 12.1.7. Performa
  - 12.1.8. Contoh-contoh
- 12.2. `copyreg` --- Register `pickle` support functions
  - 12.2.1. Contoh
- 12.3. `shelve` --- Python object persistence
  - 12.3.1. Restrictions
  - 12.3.2. Contoh
- 12.4. `marshal` --- Internal Python object serialization
- 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 antarmuka untuk basisdata SQLite
  - 12.6.1. Fungsi dan konstanta modul
  - 12.6.2. Objek Koneksi
  - 12.6.3. Objek Kursor
  - 12.6.4. Objek Baris
  - 12.6.5. Pengecualian
  - 12.6.6. SQLite dan tipe Python
    - 12.6.6.1. Pengenalan
    - 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. Mengontrol Transaksi
  - 12.6.8. Menggunakan `sqlite3` secara efisien
    - 12.6.8.1. Menggunakan metode pintasan
    - 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