在 Python 中使用 sqlite3 模块访问 SQLite 数据库时,你提到的这行代码:
python
深色版本
cursor = db_connection.cursor()
其中的 cursor(游标) 是数据库编程中非常核心的一个概念。
🧠 一、什么是 Cursor(游标)?
Cursor(游标)是一个用于操作数据库的“指针”或“工具”,它允许你执行 SQL 命令并遍历结果集。
你可以把它想象成一个“数据库操作员”,所有对数据库的操作(查询、插入、更新、删除等)都必须通过这个游标来完成。
✅ 二、为什么需要 Cursor?
-
执行 SQL 语句
-
所有的 SQL 查询和命令都是通过游标对象来执行的。
-
示例:
python 深色版本 cursor.execute("SELECT * FROM users")
-
-
获取查询结果
-
游标可以用来逐行读取查询结果。
-
示例:
python 深色版本 rows = cursor.fetchall() # 获取全部结果 row = cursor.fetchone() # 获取一行
-
-
支持多次查询
- 同一个连接可以创建多个游标,分别执行不同的 SQL 操作。
-
事务控制
- 虽然事务通常由
Connection对象管理,但实际的 SQL 操作是通过游标执行的。
- 虽然事务通常由
📌 三、Cursor 的主要方法
| 方法 | 说明 |
|---|---|
execute(sql, [parameters]) | 执行一条 SQL 语句(可带参数) |
executemany(sql, seq_of_parameters) | 批量执行 SQL 语句 |
executescript(sql_script) | 执行多条 SQL 语句(如脚本) |
fetchone() | 获取下一行结果(单条记录) |
fetchmany(size=cursor.arraysize) | 获取指定数量的结果 |
fetchall() | 获取剩余的所有结果 |
close() | 关闭游标,释放资源 |
🧪 四、示例:完整流程演示
python
深色版本
import sqlite3
# 1. 连接到数据库(如果不存在会自动创建)
db_connection = sqlite3.connect("example.db")
# 2. 创建游标
cursor = db_connection.cursor()
# 3. 使用游标执行 SQL 命令
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)")
cursor.execute("INSERT INTO users (name) VALUES (?)", ("Alice",))
# 4. 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
print(row)
# 5. 提交事务
db_connection.commit()
# 6. 关闭游标和连接
cursor.close()
db_connection.close()
⚠️ 五、注意事项
- 游标使用完后最好关闭,避免资源泄漏。
- 每个游标只能同时处理一个 SQL 操作,如果你有多个并发操作需求,可以创建多个游标。
- 不要在多个线程中共享同一个游标对象,SQLite 不支持这种用法。
- Python 的 sqlite3 模块默认将游标返回的数据以元组形式呈现,也可以通过设置
row_factory改为字典形式。
✅ 六、总结一句话:
在 Python 的
sqlite3模块中,cursor是执行 SQL 命令和获取查询结果的核心对象,几乎所有的数据库操作都要通过它来进行。
如果你正在开发一个小型桌面应用、日志系统、配置存储器等,使用 sqlite3 + cursor 是一种轻量、高效、无需安装数据库服务器的理想方式。