Python:sqlite3 库高级用法举例和应用详解

Python:sqlite3库高级用法举例和应用详解

模块介绍

sqlite3 模块是 Python 的标准库之一,是用于与 SQLite 数据库进行交互的模块。SQLite 是一种自包含的、无需服务器的、零配置的、事务性的 SQL 数据库引擎,非常适合嵌入到应用程序中。Python 的 sqlite3 模块从 Python 2.5 开始就纳入标准库,并且在 Python 3 中得到了进一步改善。与 SQLite 数据库交互时,sqlite3 模块提供了一个轻量级的解决方案,不需要安装任何额外的软件。

应用场景

SQLite 和 sqlite3 模块主要适用于以下场景:

  • 嵌入式数据库:无需安装、配置和维护独立的数据库服务器,适用于单用户应用程序、移动应用和嵌入式设备。
  • 快速原型开发:便捷的数据库操作能够加速开发进程,尤其是在快速迭代的项目中。
  • 测试和验证:SQLite 文件易于复制和分发,使得测试环境的搭建更加简单。
  • 小规模数据管理:适合处理相对较小的数据集,例如配置数据、日志数据和临时存储的数据。

安装说明

sqlite3 是 Python 的内置模块,因此不需要额外安装。只需要确保你的 Python 版本为 3.0 以上,便可以直接使用。

用法举例

示例 1:基本数据库操作

这个例子展示了如何创建一个 SQLite 数据库和表,插入数据并进行简单查询。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import sqlite3  # 导入sqlite3模块

# 创建一个在内存中的SQLite数据库
conn = sqlite3.connect(':memory:')
# 创建一个用于操作数据库的游标对象
cursor = conn.cursor()

# 创建一个表
cursor.execute('''
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
)
''')
# 提交事务
conn.commit()

# 插入一些数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")
conn.commit()

# 查询并打印数据
cursor.execute("SELECT * FROM users")
users = cursor.fetchall()
for user in users:
print(user) # 输出每行数据

# 关闭连接
conn.close()

示例 2:参数化查询防止 SQL 注入

这个示例展示了如何进行参数化查询以防止 SQL 注入攻击。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import sqlite3  # 导入sqlite3模块

# 创建一个在内存中的SQLite数据库
conn = sqlite3.connect(':memory:')
# 创建一个用于操作数据库的游标对象
cursor = conn.cursor()

# 创建一个表
cursor.execute('''
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
)
''')
conn.commit()

# 准备插入的数据
users_to_insert = [
('Alice', 30),
('Bob', 25),
('Charlie', 35)
]

# 使用参数化查询插入数据
cursor.executemany("INSERT INTO users (name, age) VALUES (?, ?)", users_to_insert)
conn.commit()

# 查询并打印数据
cursor.execute("SELECT * FROM users WHERE age > ?", (25,))
users = cursor.fetchall()
for user in users:
print(user) # 输出每行数据

# 关闭连接
conn.close()

示例 3:事务管理和错误处理

这个例子展示了如何使用事务管理进行批量数据操作,并在错误时进行回滚。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import sqlite3  # 导入sqlite3模块

# 创建一个在内存中的SQLite数据库
conn = sqlite3.connect(':memory:')
# 创建一个用于操作数据库的游标对象
cursor = conn.cursor()

# 创建一个表
cursor.execute('''
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
)
''')
conn.commit()

try:
# 开始一个事务
conn.isolation_level = 'IMMEDIATE'
cursor.execute("BEGIN")

# 插入多条记录
cursor.executemany("INSERT INTO users (name, age) VALUES (?, ?)", [
('Alice', 30),
('Bob', 25),
('Charlie', 35)
])

# 提交事务
conn.commit()
except sqlite3.Error as e:
print(f"An error occurred: {e}")
conn.rollback() # 如果发生错误,回滚事务

# 查询并打印数据
cursor.execute("SELECT * FROM users")
users = cursor.fetchall()
for user in users:
print(user) # 输出每行数据

# 关闭连接
conn.close()

通过这些例子,我们可以看到 sqlite3 在数据库操作中非常强大和灵活。从简单的数据库连接到复杂的事务管理,Python 的 sqlite3 模块都能应付自如。

希望大家能多多关注我的博客 “全糖冲击博客”。这里汇集了所有 Python 标准库的使用教程,非常适合学习和查询。你可以快速找到各种库的用法,节省大量的时间。关注我的博客不仅可以帮助你提升编程技能,还能及时获取最新的技术资讯和最佳实践。我们致力于为每一个喜爱 Python 编程的你提供最优质的学习资源和范例代码。不论你是初学者还是资深开发者,关注 “全糖冲击博客” 都将是你提升技能的不二选择!

软件版本可能变动

如果本文档不再适用或有误,请留言或联系我进行更新。让我们一起营造良好的学习氛围。感谢您的支持! - Travis Tang