使用 Python 操作 SQLite 数据库
SQLite 是一个轻量级的关系型数据库,它实现了 SQL 数据库引擎,但又不需要安装和配置,因而在 Python 编程中被广泛使用。这个数据库的文件存储在磁盘上,方便携带和备份。接下来,我们就通过示例来学习如何在 Python 中使用 SQLite。
基本概念
在开始具体代码之前,我们先了解一些基本概念。在 SQLite 中,一个数据库可以有多个表,每个表又包含多个行和列。我们可以使用 Python 的内置模块 sqlite3 来完成数据库的操作。
安装 SQLite
如果你使用的是现代 Python 版本,sqlite3 模块已经包含在标准库中,你无需额外安装。启动 Python 解释器后,可以通过以下代码来导入模块:
import sqlite3
创建数据库
首先,我们需要创建一个数据库和一个表来存放数据。以下是创建数据库和表的代码示例:
# 创建数据库连接
conn = sqlite3.connect('example.db')
# 创建游标
cursor = conn.cursor()
# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL
)
''')
# 提交事务并关闭连接
conn.commit()
conn.close()
插入数据
接下来,我们可以向表中插入数据。可以使用 INSERT INTO 语句来完成:
# 插入数据
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
cursor.execute('''
INSERT INTO users (name, age)
VALUES (?, ?)
''', ('Alice', 30))
# 提交事务并关闭连接
conn.commit()
conn.close()
查询数据
除了插入数据,查询数据也是一个常见的操作。我们可以使用 SELECT 语句来获取用户信息:
# 查询数据
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
print(row)
conn.close()
更新与删除数据
我们还可以更新和删除数据。以下是更新数据和删除数据的示例代码:
# 更新数据
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
cursor.execute('''
UPDATE users
SET age = ?
WHERE name = ?
''', (31, 'Alice'))
conn.commit()
conn.close()
# 删除数据
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
cursor.execute('''
DELETE FROM users
WHERE name = ?
''', ('Alice',))
conn.commit()
conn.close()
类图
为了更好地理解代码结构和数据库模型,我们可以使用类图来表示 User 类。
classDiagram
class User {
+int id
+String name
+int age
+create()
+read()
+update()
+delete()
}
状态图
最终,为了清晰地了解操作的状态流转,我们也可以绘制状态图。
stateDiagram
[*] --> Idle
Idle --> Creating : Create
Idle --> Reading : Read
Idle --> Updating : Update
Idle --> Deleting : Delete
Creating --> Idle
Reading --> Idle
Updating --> Idle
Deleting --> Idle
结论
通过以上代码示例,我们学习了如何在 Python 中使用 SQLite 进行基本的数据库操作。SQLite 的使用简单方便,适合快速开发和小型应用。在实际项目中,我们可以扩展这些操作来实现更加复杂的功能。无论是数据存储、管理还是分析,SQLite 都将是一个优秀的选择。希望这篇文章能为你在 Python 和数据库的学习上提供一定的帮助!
















