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 list of modules described in this chapter is: * "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 * Example * Restricting Globals * Performance * Examples * "copyreg" --- Register "pickle" support functions * Example * "shelve" --- Python object persistence * Restrictions * Example * "marshal" --- Internal Python object serialization * "dbm" --- Interfaces to Unix "databases" * "dbm.gnu" --- GNU's reinterpretation of dbm * "dbm.ndbm" --- Interface based on ndbm * "dbm.dumb" --- Portable DBM implementation * "sqlite3" --- DB-API 2.0 interface for SQLite databases * Module functions and constants * Connection Objects * Cursor Objects * Row Objects * Exceptions * SQLite and Python types * Introduction * 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 * Controlling Transactions * Using "sqlite3" efficiently * Using shortcut methods * Accessing columns by name instead of by index * Using the connection as a context manager