Python 教程

18.2 使用 sqlite3 模块操作SQLite数据库

Python sqlite3 模块教程:轻松操作SQLite数据库

Python 教程

学习如何使用Python内置的sqlite3模块操作SQLite数据库。从连接到查询,提供简单易懂的示例代码,适合新人快速掌握数据库管理基础。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

使用Python的sqlite3模块操作SQLite数据库

简介

SQLite是一个轻量级的、基于文件的数据库系统,非常适合学习和小型项目。Python标准库中内置了sqlite3模块,使得与SQLite数据库的交互变得非常简单。本教程将引导您逐步学习如何使用sqlite3模块,从连接到数据库到执行基本的CRUD(创建、读取、更新、删除)操作。

为什么选择SQLite和sqlite3?

  • 无需安装:SQLite数据库存储在单个文件中,不需要独立的服务器,sqlite3模块已包含在Python中。
  • 适合新手:语法简单,易于上手,是学习数据库编程的理想起点。

准备工作

确保您已安装Python(建议使用Python 3.6及以上版本)。无需额外安装,sqlite3模块是Python标准库的一部分。

基本步骤

1. 导入sqlite3模块

首先,导入Python的sqlite3模块。

import sqlite3

2. 连接到数据库

使用sqlite3.connect()函数连接到SQLite数据库。如果指定的数据库文件不存在,Python会自动创建一个新文件。

# 连接到名为example.db的数据库(如果不存在则创建)
conn = sqlite3.connect('example.db')
print("数据库连接成功!")
  • 注意:在连接时,您可以传递数据库文件的路径,例如'data/example.db'

3. 创建游标(Cursor)

游标是用于执行SQL命令和获取结果的对象。使用连接对象的cursor()方法创建。

cursor = conn.cursor()
print("游标创建成功!")

4. 创建表格

使用游标的execute()方法执行SQL语句来创建表格。这里我们创建一个名为users的表格,包含idnameage字段。

cursor.execute('''CREATE TABLE IF NOT EXISTS users (
                  id INTEGER PRIMARY KEY,
                  name TEXT,
                  age INTEGER
               )''')
print("表格创建成功!")
  • 解释IF NOT EXISTS确保如果表格已存在,不会报错。

5. 插入数据

向表格中插入数据。使用带占位符(如?)的SQL语句来避免SQL注入攻击,并传递参数。

cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Alice', 30))
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Bob', 25))
print("数据插入成功!")

6. 提交更改

插入、更新或删除数据后,必须使用commit()方法将更改保存到数据库。

conn.commit()
print("更改已提交!")

7. 查询数据

使用SELECT语句查询数据。fetchall()方法获取所有结果行。

cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
print("查询到的数据:")
for row in rows:
    print(f"ID: {row[0]}, Name: {row[1]}, Age: {row[2]}")
  • 解释*表示选择所有列,结果是一个列表,每个元素是一个元组。

8. 更新数据

使用UPDATE语句修改现有数据。同样使用占位符传递新值和条件。

cursor.execute("UPDATE users SET age = ? WHERE name = ?", (31, 'Alice'))
conn.commit()
print("数据更新成功!")

9. 删除数据

使用DELETE语句删除数据。指定条件来定位要删除的记录。

cursor.execute("DELETE FROM users WHERE name = ?", ('Bob',))
conn.commit()
print("数据删除成功!")

10. 关闭连接

完成所有操作后,使用close()方法关闭数据库连接,释放资源。

conn.close()
print("数据库连接已关闭!")

完整示例代码

以下是一个完整的示例,展示如何从头到尾操作SQLite数据库。

import sqlite3

# 连接到数据库
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# 创建表格
cursor.execute('''CREATE TABLE IF NOT EXISTS users (
                  id INTEGER PRIMARY KEY,
                  name TEXT,
                  age INTEGER
               )''')

# 插入数据
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")
rows = cursor.fetchall()
print("查询结果:")
for row in rows:
    print(row)

# 更新数据
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (31, 'Alice'))
conn.commit()

# 删除数据
cursor.execute("DELETE FROM users WHERE name = ?", ('Bob',))
conn.commit()

# 再次查询以验证更改
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
print("更新后的查询结果:")
for row in rows:
    print(row)

# 关闭连接
conn.close()

常见问题解答

  1. 如何处理错误? 可以使用try-except块捕获sqlite3.Error异常,确保程序健壮性。

  2. 为什么我的数据没有保存? 检查是否在修改操作后调用了commit()方法。

  3. 我可以使用其他SQL语句吗? 是的,sqlite3模块支持大多数标准SQL命令,如ORDER BYGROUP BY等。

总结

通过本教程,您学会了如何使用Python的sqlite3模块操作SQLite数据库。关键点包括:

  • 使用connect()连接到数据库。
  • 使用游标执行SQL命令。
  • 执行基本的CRUD操作(插入、查询、更新、删除)。
  • 提交更改并关闭连接。

建议您动手实践这些示例,并尝试扩展功能,如使用多个表格或复杂查询。数据库编程是Python应用开发的重要部分,掌握基础将为您进一步学习打下坚实基础。

祝您学习愉快,编程进步!

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包