【成人版python基础入门】第八章 SQLite——小而美的数据存储
SQLite——小而美的数据存储
在数据存储的世界中,有各种各样的选择,从大型的关系数据库管理系统(如 MySQL 和 PostgreSQL)到 NosQL 数据库(如 MongoDB)。然而,对于许多小型项目和个人应用来说,这些选择可能过于复杂和笨重。这时候,SQLite 就像是一股清流,以它的轻巧、简便和高效,成为许多开发者的首选。本文将带你深入了解 SQLite 的特点和适用场景,学习如何使用 Python 连接和操作 SQLite 数据库,并通过一个实际的代码示例,展示如何建立一个个人图书管理系统。
SQLite 简介
特点
- 轻量级:SQLite 是一个嵌入式数据库,不需要单独的服务器进程,也没有配置文件,体积非常小。
- 零配置:SQLite 可以直接在文件系统中创建数据库文件,无需复杂的安装和配置。
- 跨平台:SQLite 支持多种操作系统,包括 Windows、macOS 和 Linux。
- 高性能:对于中小型数据量,SQLite 的性能非常出色。
- 安全性:SQLite 提供了事务支持和备份功能,确保数据的安全和完整。
适用场景
SQLite 适合以下场景:
- 小型应用:SQLite 非常适合小型应用的数据存储需求,如个人项目、小型网站等。
- 嵌入式系统:由于 SQLite 不需要单独的服务器进程,它非常适合嵌入式系统和移动应用。
- 开发和测试:SQLite 可以快速地创建和销毁数据库,非常适合开发和测试环境。
- 数据备份:SQLite 生成的数据库文件可以直接备份和恢复,非常适合数据备份操作。
风趣的例子
想象一下,你是一名园丁,拥有一片小而美的花园。你不需要庞大的灌溉系统和复杂的管理工具,只需要一个简单的小水壶和一把剪刀,就能照顾好你的花园。SQLite 就像这个小水壶和剪刀,它提供了你需要的基本功能,而无需复杂的配置和维护。
使用 Python 连接 SQLite 数据库
sqlite3
模块
Python 标准库中包含了 sqlite3
模块,可以方便地与 SQLite 数据库进行交互。下面是一个详细的步骤,展示如何使用 sqlite3
模块连接和操作 SQLite 数据库。
安装 SQLite
SQLite 通常已经预装在大多数现代操作系统中。如果你的系统中没有 SQLite,可以前往 SQLite 官方网站 下载并安装。
交互式连接和操作
假设你是一名勇敢的探险家,准备进入一个神秘的洞穴(SQLite 数据库)。你需要一把神奇的钥匙(sqlite3
模块)来开启洞穴的大门(连接数据库)。
步骤1:打开魔法地图(命令行)
- Windows:点击
Win + R
,输入cmd
或PowerShell
,按回车键。 - macOS 和 Linux:打开
Terminal
。
步骤2:进入你的项目目录
cd your_project_directory
步骤3:使用 sqlite3
模块连接数据库
打开 Python 交互式解释器,输入以下代码:
import sqlite3
# 连接到 SQLite 数据库
# 如果数据库不存在,它会自动创建
conn = sqlite3.connect('example.db')
# 创建一个游标对象
cursor = conn.cursor()
步骤4:执行 SQL 操作
创建表
# 创建一个表
cursor.execute('''
CREATE TABLE IF NOT EXISTS books (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
author TEXT NOT NULL,
publication_year INTEGER
)
''')
插入数据
# 插入数据
cursor.execute('''
INSERT INTO books (title, author, publication_year)
VALUES ('Python 编程', 'Guido van Rossum', 1991)
''')
# 提交事务
conn.commit()
查询数据
# 查询数据
cursor.execute('SELECT * FROM books')
rows = cursor.fetchall()
# 打印查询结果
for row in rows:
print(row)
步骤5:关闭数据库连接
# 关闭数据库连接
conn.close()
基本的 SQL 操作
创建表
在 SQLite 中,创建表的 SQL 语句如下:
CREATE TABLE IF NOT EXISTS books (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
author TEXT NOT NULL,
publication_year INTEGER
);
CREATE TABLE
:创建一个新表。IF NOT EXISTS
:如果表已经存在,则不会重新创建。id INTEGER PRIMARY KEY
:定义id
列为整数类型,并设置为主键。title TEXT NOT NULL
:定义title
列为文本类型,不允许为空。author TEXT NOT NULL
:定义author
列为文本类型,不允许为空。publication_year INTEGER
:定义publication_year
列为整数类型。
插入数据
在 SQLite 中,插入数据的 SQL 语句如下:
INSERT INTO books (title, author, publication_year)
VALUES ('Python 编程', 'Guido van Rossum', 1991);
INSERT INTO
:指定要插入数据的表。VALUES
:指定要插入的值。
查询数据
在 SQLite 中,查询数据的 SQL 语句如下:
SELECT * FROM books;
SELECT *
:选择所有列。FROM books
:指定要查询的表。
更新数据
在 SQLite 中,更新数据的 SQL 语句如下:
UPDATE books
SET publication_year = 1990
WHERE title = 'Python 编程';
UPDATE
:指定要更新的表。SET
:指定要更新的列和新的值。WHERE
:指定更新条件。
删除数据
在 SQLite 中,删除数据的 SQL 语句如下:
DELETE FROM books
WHERE id = 1;
DELETE FROM
:指定要删除数据的表。WHERE
:指定删除条件。
风趣的例子
想象一下,你是一个图书管理员,负责管理一个小而美的图书馆。你有一本魔法书(SQLite 数据库),可以记录每一本书的信息。你可以快速地添加新书、查询书籍信息、更新书籍信息,甚至删除不再需要的书籍。SQLite 就像这本魔法书,虽然看似简单,但却能高效地管理你的图书馆。
代码样例:建立一个个人图书管理系统
项目结构
一个简单的个人图书管理系统项目结构如下:
book_manager/
main.py
books.db
创建项目
-
创建项目目录:
mkdir book_manager cd book_manager
-
创建数据库文件:
touch books.db
编写代码
编辑 main.py
文件,编写以下代码:
# main.py
import sqlite3
def create_connection():
""" 创建数据库连接 """
conn = None
try:
conn = sqlite3.connect('books.db')
print('数据库连接成功')
except sqlite3.Error as e:
print(e)
return conn
def create_table(conn):
""" 创建表 """
try:
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS books (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
author TEXT NOT NULL,
publication_year INTEGER
);
''')
print('表创建成功')
except sqlite3.Error as e:
print(e)
def insert_book(conn, title, author, publication_year):
""" 插入书籍信息 """
try:
cursor = conn.cursor()
cursor.execute('''
INSERT INTO books (title, author, publication_year)
VALUES (?, ?, ?)
''', (title, author, publication_year))
conn.commit()
print('书籍插入成功')
except sqlite3.Error as e:
print(e)
def get_books(conn):
""" 查询所有书籍信息 """
try:
cursor = conn.cursor()
cursor.execute('SELECT * FROM books')
rows = cursor.fetchall()
return rows
except sqlite3.Error as e:
print(e)
def get_book_by_id(conn, book_id):
""" 根据 ID 查询书籍信息 """
try:
cursor = conn.cursor()
cursor.execute('SELECT * FROM books WHERE id = ?', (book_id,))
row = cursor.fetchone()
return row
except sqlite3.Error as e:
print(e)
def update_book(conn, book_id, title, author, publication_year):
""" 更新书籍信息 """
try:
cursor = conn.cursor()
cursor.execute('''
UPDATE books
SET title = ?, author = ?, publication_year = ?
WHERE id = ?
''', (title, author, publication_year, book_id))
conn.commit()
print('书籍更新成功')
except sqlite3.Error as e:
print(e)
def delete_book(conn, book_id):
""" 删除书籍信息 """
try:
cursor = conn.cursor()
cursor.execute('DELETE FROM books WHERE id = ?', (book_id,))
conn.commit()
print('书籍删除成功')
except sqlite3.Error as e:
print(e)
def main():
conn = create_connection()
if conn is not None:
create_table(conn)
# 插入几本书
insert_book(conn, 'Python 编程', 'Guido van Rossum', 1991)
insert_book(conn, 'Web 开发入门', 'Armin Ronacher', 2010)
insert_book(conn, 'Django 巨人肩膀上的开发', 'Django 开发者团队', 2015)
# 查询所有书籍
books = get_books(conn)
print('所有书籍:')
for book in books:
print(book)
# 查询特定书籍
book_id = 1
book = get_book_by_id(conn, book_id)
print(f'ID 为 {book_id} 的书籍:')
print(book)
# 更新书籍
update_book(conn, book_id, 'Python 编程', 'Guido van Rossum', 2020)
# 再次查询特定书籍
book = get_book_by_id(conn, book_id)
print(f'更新后的 ID 为 {book_id} 的书籍:')
print(book)
# 删除书籍
delete_book(conn, book_id)
# 最后再次查询所有书籍
books = get_books(conn)
print('删除后的所有书籍:')
for book in books:
print(book)
# 关闭数据库连接
conn.close()
else:
print('数据库连接失败')
if __name__ == '__main__':
main()
运行项目
-
保存代码:将上述代码保存为
main.py
。 -
运行脚本:
python main.py
-
查看结果:脚本运行后,你将在控制台中看到以下输出:
数据库连接成功 表创建成功 书籍插入成功 书籍插入成功 书籍插入成功 所有书籍: (1, 'Python 编程', 'Guido van Rossum', 1991) (2, 'Web 开发入门', 'Armin Ronacher', 2010) (3, 'Django 巨人肩膀上的开发', 'Django 开发者团队', 2015) ID 为 1 的书籍: (1, 'Python 编程', 'Guido van Rossum', 1991) 书籍更新成功 更新后的 ID 为 1 的书籍: (1, 'Python 编程', 'Guido van Rossum', 2020) 书籍删除成功 删除后的所有书籍: (2, 'Web 开发入门', 'Armin Ronacher', 2010) (3, 'Django 巨人肩膀上的开发', 'Django 开发者团队', 2015)
摘要
SQLite 是一种轻量级的数据库,非常适合小型应用的数据存储需求。通过本文,你学会了如何使用 Python 的 sqlite3
模块连接和操作 SQLite 数据库,掌握了创建表、插入数据、查询数据、更新数据和删除数据的基本 SQL 操作。我们通过一个实际的代码示例,展示了一个个人图书管理系统的建立过程,展示了 SQLite 的实用性和简洁性。
希望本文能够帮助你快速入门 SQLite,为你的程序添加数据持久化功能。站在 SQLite 的肩膀上,你不仅能快速地实现数据存储,还能更好地理解数据库操作的最佳实践。继续探索 SQLite 的更多功能,你会发现,它不仅可以帮助你管理小型数据集,还能支持更复杂的场景。祝你在数据库开发的道路上越走越远,成为一名优秀的 Python 数据库开发者!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)