第2部分 持久化和序列化
- 序列化和保存——JSON、YAML、Pickle、CSV和XML - 用Shelve保存和获取对象 - 用SQLite保存和获取对象 - 传输和共享对象 - 配置文件和持久化 |
持久化和序列化所谓对象持久化的过程,就是把对象写入某个存储机制。对象可以从存储机制中取出并在Python应用中使用。对象可以使用JSON形式来表示并写入文件系统中,或者是被对象关系映射(Object Relational Mapping,ORM)层用于表达SQL数据表中的行,将对象存入数据库。
对象序列化有两个目的。序列化是为了能够将对象存入本地文件系统。另外,有时在进行进程或应用通信时,也需要将对象进行序列化。然而所关注的点是不同的,一般持久化包含了序列化。因此,一种优秀的持久化技术也会支持数据交换的场景。我们会介绍几种Python用来序列化和持久化的方式,主要涉及以下各章。
- 第9章“序列化和保存——JSON、YAML、Pickle、CSV和XML”介绍了如何使用类库进行简单的持久化操作,包括这些数据格式:JSON、YAML、Pickle、XML和CSV。它们都是Python中比较普遍使用的格式,也比较适合用于数据交换,主要应用于单一对象而非多个对象的场景。
- 第10章“用Shelve保存和获取对象”介绍了如何使用Python中的Shelve模块来进行基本的数据库操作,可用于完成Python对象的存储并支持多个对象的持久化。
- 第11章“用SQLite保存和获取对象”中介绍了如何使用SQL来进行有关关系数据库更复杂的操作。由于SQL与面向对象不能直接匹配,于是就产生了阻抗不匹配问题。常见的解决方案是使用对象关系映射来完成对象的存储。
- 对于网站应用,通常会使用表征性状态传输(Representation State Transfer,REST)。在第12章“传输和共享对象”中将介绍如何使用HTTP协议和JSON、YAML以及XML格式来传输对象。
- 最后,在第13章“配置文件和持久化”中会介绍几种Python应用操作配置文件的方式。可以使用不同的数据格式,但各有优缺点。配置文件其实就是一个可被直接编辑的、持久化对象的集合。
这部分的重点是在更高层面实现抽象的设计模式,我们称之为架构模式。因为它们用于表达应用的整体结构,将系统分为了不同的层。我们的关注点是将系统划分为不同的部分,这个原则称为“关注点分离”。例如,我们需要把持久化、核心逻辑以及数据表示层分离。熟练掌握面向对象设计意味着需要站在更高的层面针对系统架构进行思考。
