12. 数据持久化
**************

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

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

* 12.1. "pickle" —— Python 对象序列化

  * 12.1.1. 与其他 Python 模块间的关系

    * 12.1.1.1. 与 "marshal" 间的关系

    * 12.1.1.2. 与 "json" 模块的比较

  * 12.1.2. 数据流格式

  * 12.1.3. 模块接口

  * 12.1.4. 可以被打包/解包的对象

  * 12.1.5. 打包类实例

    * 12.1.5.1. 持久化外部对象

    * 12.1.5.2. Dispatch 表

    * 12.1.5.3. 处理有状态的对象

  * 12.1.6. 限制全局变量

  * 12.1.7. 性能

  * 12.1.8. 例子

* 12.2. "copyreg" --- 注意 "pickle" 支持函数

  * 12.2.1. 示例

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

  * 12.3.1. 限制

  * 12.3.2. 示例

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

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

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

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

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

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

  * 12.6.1. 模块函数和常量

  * 12.6.2. 连接对象（Connection）

  * 12.6.3. Cursor 对象

  * 12.6.4. 行对象*Row*

  * 12.6.5. 异常

  * 12.6.6. SQLite 与 Python 类型

    * 12.6.6.1. 概述

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

      * 12.6.6.2.1. 让对象自行调整

      * 12.6.6.2.2. 注册可调用的适配器

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

    * 12.6.6.4. 默认适配器和转换器

  * 12.6.7. 控制事务

  * 12.6.8. 有效使用 "sqlite3"

    * 12.6.8.1. 使用快捷方式

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

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

  * 12.6.9. 常见问题

    * 12.6.9.1. 多线程
