11. Data Persistence
********************

The modules described in this chapter support storing Python data in a
persistent form on disk.  The "pickle" and "marshal" modules can turn
many Python data types into a stream of bytes and then recreate the
objects from the bytes.  The various DBM-related modules support a
family of hash-based file formats that store a mapping of strings to
other strings.  The "bsddb" module also provides such disk-based
string-to-string mappings based on hashing, and also supports B-Tree
and record-based formats.

The list of modules described in this chapter is:

* 11.1. "pickle" — Python object serialization

  * 11.1.1. Relationship to other Python modules

  * 11.1.2. Data stream format

  * 11.1.3. Usage

  * 11.1.4. What can be pickled and unpickled?

  * 11.1.5. The pickle protocol

    * 11.1.5.1. Pickling and unpickling normal class instances

    * 11.1.5.2. Pickling and unpickling extension types

    * 11.1.5.3. Pickling and unpickling external objects

  * 11.1.6. Subclassing Unpicklers

  * 11.1.7. Example

* 11.2. "cPickle" — A faster "pickle"

* 11.3. "copy_reg" — Register "pickle" support functions

  * 11.3.1. Example

* 11.4. "shelve" — Python object persistence

  * 11.4.1. Restrictions

  * 11.4.2. Example

* 11.5. "marshal" — Internal Python object serialization

* 11.6. "anydbm" — Generic access to DBM-style databases

* 11.7. "whichdb" — Guess which DBM module created a database

* 11.8. "dbm" — Simple “database” interface

* 11.9. "gdbm" — GNU’s reinterpretation of dbm

* 11.10. "dbhash" — DBM-style interface to the BSD database library

  * 11.10.1. Database Objects

* 11.11. "bsddb" — Interface to Berkeley DB library

  * 11.11.1. Hash, BTree and Record Objects

* 11.12. "dumbdbm" — Portable DBM implementation

  * 11.12.1. Dumbdbm Objects

* 11.13. "sqlite3" — DB-API 2.0 interface for SQLite databases

  * 11.13.1. Module functions and constants

  * 11.13.2. Connection Objects

  * 11.13.3. Cursor Objects

  * 11.13.4. Row Objects

  * 11.13.5. SQLite and Python types

    * 11.13.5.1. Introduction

    * 11.13.5.2. Using adapters to store additional Python types in
      SQLite databases

      * 11.13.5.2.1. Letting your object adapt itself

      * 11.13.5.2.2. Registering an adapter callable

    * 11.13.5.3. Converting SQLite values to custom Python types

    * 11.13.5.4. Default adapters and converters

  * 11.13.6. Controlling Transactions

  * 11.13.7. Using "sqlite3" efficiently

    * 11.13.7.1. Using shortcut methods

    * 11.13.7.2. Accessing columns by name instead of by index

    * 11.13.7.3. Using the connection as a context manager

  * 11.13.8. Common issues

    * 11.13.8.1. Multithreading
