模块介绍
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
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
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
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