这个文档所针对的是一个已不再受支持的 Python 旧版本。 你应当升级版本，并阅读 Python 当前稳定版本的文档.

# 数据持久化

本章中描述的模块支持在磁盘上以持久形式存储 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`
    - 使用快捷方式
    - 通过名称而不是索引访问索引
    - 使用连接作为上下文管理器