你在办公中,一定遇到过需要数据持久化的问题。数据持久化,简单来说,就是当你关闭程序的时候,数据依然可以完整地保存在电脑中。你可能会想到用文本文件、Excel 来存储这些数据,文本呢,没有办法按列读写数据,Excel 呢,支持的默认 API 无法进行复杂查询。所以我今天要给你介绍一个功能强大,但编写代码又简单的数据库 SQLite。
你可以用 SQLite 存储结构化的数据,把程序的处理结果保存到电脑中,便于下次或使用新的程序对这些数据进行访问。
用 SQLite 存储结构化的数据,包括增删改查这些操作。所以今天这节,就教你怎么来使用函数封装 SQL 语句,实现数据的读取和写入,下一节我们再来学习如何通过类实现复杂的 SQL 语句的封装,以及如何更新和删除数据。
在讲解这些之前,考虑到 SQLite 在持久化数据存储的重要性,我想要先给你介绍 SQLite 的优势。
使用 SQLite 代替文本和 Excel 有哪些优势
也许你对 SQLite 这个名字还很陌生,但其实你早就在手机、智能电视、机顶盒等电子设备中用到过它了,比如手机上的通讯录,就是使用 SQLite 存储联系人的。
SQLite 中存储的内容是结构化数据,像是通讯录、企业 ERP 数据、财务数据等这些存储和排列很有规律的数据,就被称作结构化数据。类似 Excel 的格式一样,分为“行”和“列”。以存储通讯录为例,每一列会提前指定好哪一列存放姓名、哪那一列存放电话号码,而每一行就是一个联系人的姓名和电话的具体记录。
在自动化办公中,你可以把结构化数据存放到 SQLite 中,它的处理速度和文件体积上要比文本文件和 Excel 更有优势。它会比文本文件的处理速度更快,比 Excel 需要的空间更少。甚至有人将 SQLite 应用到了每天点击量在 10 万次的网站上,足见它的稳定和高效的处理效率。
SQLite 和你听说过的大型数据库 Oracle、MySQL 数据库不同,它更多是面向办公场景和移动设备的,所以它有大型数据库的稳定、高效、支持 SQL 语言的特性,但是也要比大型数据库学习起来更加简单。
正是由于它拥有数据库的特性,所以从 SQLite 中查找数据要比从文本文件中更快。而且它的数据还满足数据库必需的“增删改查”,但不支持设置字体、字号,所以存储一条数据所使用的空间会比 Excel 更小。这些特性叠加起来就刚好形成了 SQLite 的特有优势:
1. 数据查询速度快;
2. 存放数据的空间占用少;
3. 实现了一般数据库能够支持的(基于 SQL 语言的)增删改查。
总结来说,就是如果你需要存放结构化的数据,而且只关注数据读取的效率,不关注数据的样式,而且还需要编程语言来进行数据访问的话,使用 SQLite 要比文本文件、Excel 更适合你的办公场景。
介绍了 SQLite 这么多好处,那赶快带着你把它用起来吧。
为 SQLite 建立数据表
要想使用 SQLite 数据库,光有文件还不够,你还要为它建立数据表,类似你新建了一个 Excel 工作簿的文件,与此同时你还要建立一个工作表,把数据写在工作表上, 再将多张工作表放在工作簿上面。
因此,要想实现对数据库的操作,我也需要为 SQLite 创建一张工作表,接下来就用一个创建手机通讯录数据表的脚本,演示一下如何为 SQLite 数据库创建它的“工作表”的。
SQLite 建立数据表的一般流程
为了能够让你更具体地学习数据表是怎样创建和使用的,先把创建数据表的代码写出来给你,对照代码讲解,SQLite 建立数据表的流程。
import sqlite3
import pathlib
# 数据库文件的路径和文件名称
dir = pathlib.PurePath(__file__).parent
db = pathlib.PurePath(dir, "contents.db")
# 创建连接
conn = sqlite3.connect(db)
# 创建游标
cur = conn.cursor()