Python SQLite数据库游标(Cursor)使用详解与实战

阿麦
阿麦
发布时间:2026-10-13| 4人浏览过
原创

本文详细解析Python中SQLite数据库游标(Cursor)的核心机制与操作方法。涵盖从建立连接、创建游标对象,到执行SQL语句(增删改查)及结果获取的全过程。重点阐述游标的迭代器与生成器特性,强调事务提交(commit)的重要性及fetch系列方法的使用注意事项,帮助开发者高效、安全地进行数据库交互。

游标(Cursor)本质上是实现了迭代器协议(包含__iter__方法)和生成器机制的MySQLdb对象。在初始状态下,游标内部并不存储具体数据,只有当调用fetchone()或fetchall()方法时,才会返回包含数据的元组(tuple),此时才支持len()和index()等操作,这体现了其迭代器的特征。同时,由于游标具有“一次性”使用的特性,即每次获取数据后会记录当前读取位置,后续操作从该位置继续而非从头开始,且当所有数据被提取完毕后,该游标即失效,无法再次fetch数据,因此它也被视为一种生成器。

数据库支持与SQLite简介

数据库支持

仅依靠简单的纯文本处理功能有限,引入数据库系统能够实现更复杂强大的数据处理需求。本节将以轻量级嵌入式数据库SQLite为例进行演示。

SQLite 和PySQLite

SQLite是一款著名的开源嵌入式数据库软件,可嵌入至各类应用程序中,并提供标准的SQL接口进行数据查询,使用便捷。其官方网站为http://www.sqlite.org。

pysqlite则是为Python提供的SQLite API接口,它极大地简化了对SQLite数据库的操作流程。

自Python 2.5版本起,SQLite的优势之一在于其包装库PySQLite已集成至Python标准库中,因此开发者可以直接调用,无需额外安装。

Python SQLite入门与连接

入门操作

可以通过导入名为sqlite3的模块来使用SQLite。随后,通过指定文件名创建一个到数据库文件的连接;若该文件不存在,系统会自动创建新文件。

游标操作与数据增删改查实战


>>> import sqlite3
>>> conn= sqlite3.connect('somedatabase.db') # 创建数据库
>>>cu =conn.cursor() #能获得连接的游标
#创建数据表
>>>cu.execute("""create table catalog (
 id integer primary key,
 pid integer,
 name varchar(10) UNIQUE
 )""")
#插入两条数据
>>>cu.execute("insert into catalog values(0,0,'name1')")
>>>cu.execute("insert into catalog values(1,0,'name2')")
>>>conn.commit()
#选择(select)
>>>cu.execute("select * from catalog")
>>>cu.fetchall() 
[(0, 0, 'name1'), (1, 0, 'name2')]
>>>cu.execute("select * from catalog where id = 1")
>>>cu.fetchall()
[(1, 0, 'name2')]
#修改(update)
>>>cu.execute(“update catalog set name='name2′ where id = 0″)
>>> cx.commit()
>>> cu.execute(“select * from catalog”)
>>> cu.fetchone()
(0, 0, ‘name2′)
#删除(delete)
>>>cu.execute(“delete from catalog where id= 1″)
>>> cx.commit()
>>> cu.execute(“select * from catalog”)
>>> cu.fetchall()
[(0, 0, 'name2')]

连接

要使用底层数据库系统,首先必须建立连接。这需要使用名为connect的函数,该函数接收多个参数,具体使用哪些参数取决于所连接的数据库类型。

connect函数的常用参数:

connect函数返回一个连接对象,该对象代表当前与数据库的会话。连接对象支持以下方法:

连接对象方法:

commit方法始终可用,但如果底层数据库不支持事务处理,则该方法无效。若关闭连接时存在未提交的事务,且数据库支持回滚,这些未提交的事务将隐式回滚。

rollback方法可能不可用,因为并非所有数据库都支持事务(即一系列原子操作)。若该方法可用,则可以“撤销”所有尚未提交的事务更改。

cursor方法引出了另一个关键概念:游标对象。通过游标可以执行SQL查询并检查结果。游标连接支持更多方法,通常在程序中更为实用。

游标:

cu = conn.cursor()

通过连接对象获取游标,该游标可用于执行SQL查询。

事务提交与连接关闭

conn.commit()

在完成数据插入或修改后,必须执行提交操作,以确保更改真正保存到数据库文件中。

游标对象方法:

游标对象特性:

cu.fetchone()

fetchall()方法返回结果集中的所有数据,结果为一个元组列表。每个元组内的元素顺序与建表时的字段顺序一致。需要注意的是,游标具有状态,它记录了当前已读取的记录位置,因此通常只能遍历结果集一次。例如在上述情况下,若再次执行fetchone()将返回空值。这一点在测试时需特别注意。

conn.close()

建议在每次修改数据库后都进行提交,而不仅仅是在准备关闭连接时才提交。在准备关闭数据库连接时,应使用close方法。

总结

以上介绍了Python中操作数据库时游标的使用方法,希望能为读者提供帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持! 若本文对您有帮助,欢迎转载,请注明出处,谢谢!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。