数据持久化
**********

本章中描述的模块支持在磁盘上以持久形式存储 Python 数据。 "pickle" 和
"marshal" 模块可以将许多 Python 数据类型转换为字节流，然后从字节中重新
创建对象。 各种与 DBM 相关的模块支持一系列基于散列的文件格式，这些格式
存储字符串到其他字符串的映射。

本章中描述的模块列表是：

* "pickle" --- Python 对象序列化

  * 与其他 Python 模块间的关系

    * 与 "marshal" 间的关系

    * 与 "json" 模块的比较

  * 数据流格式

  * 模块接口

  * 可以被封存/解封的对象

  * 封存类实例

    * 持久化外部对象

    * Dispatch 表

    * 处理有状态的对象

  * 类型，函数和其他对象的自定义归约

  * 外部缓冲区

    * 提供方 API

    * 使用方 API

    * 示例

  * 限制全局变量

  * 性能

  * 示例

* "copyreg" --- 注册配合 "pickle" 模块使用的函数

  * 示例

* "shelve" --- Python 对象持久化

  * 限制

  * 示例

* "marshal" --- 内部 Python 对象序列化

* "dbm" --- Unix "数据库" 接口

  * "dbm.gnu" --- GNU 对 dbm 的重解析

  * "dbm.ndbm" --- 基于 ndbm 的接口

  * "dbm.dumb" --- 便携式 DBM 实现

* "sqlite3" --- SQLite 数据库 DB-API 2.0 接口模块

  * 模块函数和常量

  * 连接对象（Connection）

  * Cursor 对象

  * 行对象

  * 异常

  * SQLite 与 Python 类型

    * 概述

    * 使用适配器将额外的 Python 类型保存在 SQLite 数据库中。

      * 让对象自行适配

      * 注册可调用的适配器

    * 将SQLite 值转换为自定义Python 类型

    * 默认适配器和转换器

  * 控制事务

  * 有效使用 "sqlite3"

    * 使用快捷方式

    * 通过名称而不是索引访问索引

    * 使用连接作为上下文管理器

  * 常见问题

    * 多线程
