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

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

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

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

  * 与其他 Python 模块间的关系

    * 与 "marshal" 间的关系

    * 与 "json" 模块的比较

  * 数据流格式

  * 模块接口

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

  * 封存类实例

    * 持久化外部对象

    * Dispatch 表

    * 处理有状态的对象

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

  * 外部缓冲区

    * 提供方 API

    * 使用方 API

    * 示例

  * 限制全局变量

  * 性能

  * 例子

  * 命令行接口

* "copyreg" --- 注册 "pickle" 支持函数

  * 示例

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

  * 限制

  * 示例

  * 异常

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

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

  * "dbm.sqlite3" --- 针对 dbm 的 SQLite 后端

  * "dbm.gnu" --- GNU 数据库管理器 manager

  * "dbm.ndbm" --- New Database Manager

  * "dbm.dumb" --- 可移植的 DBM 实现

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

  * 教程

  * 参考

    * 模块函数

    * 模块常量

    * 连接对象

    * 游标对象

    * Row 对象

    * Blob 对象

    * PrepareProtocol 对象

    * 异常

    * SQLite 与 Python 类型

    * 默认适配器和转换器（已弃用）

    * 命令行接口

  * 常用方案指引

    * 如何在 SQL 查询中使用占位符来绑定值

    * 如何将自定义 Python 类型适配到 SQLite 值

      * 如何编写可适配对象

      * 如何注册适配器可调用对象

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

    * 适配器和转换器范例程序

    * 如何使用连接快捷方法

    * 如何使用连接上下文管理器

    * 如何使用 SQLite URI

    * 如何创建并使用行工厂对象

    * 如何处理非 UTF-8 文本编码格式

  * 说明

    * 事务控制

      * 通过 "autocommit" 属性进行事务控制

      * 通过 "isolation_level" 属性进行事务控制
