Python操作MySQL完整指南:安装、连接与增删改查实战

Chloe
Chloe
发布时间:2026-10-13| 6人浏览过
原创

本文详解Python通过MySQLdb库操作MySQL数据库的完整流程。涵盖从安装驱动、建立连接(注意host、port等参数类型)到创建游标执行插入、更新、删除及查询命令。重点解析fetchone、fetchmany、fetchall获取数据及scroll移动游标的方法,并强调事务提交与资源释放的重要性。

本文详细介绍使用Python进行MySQL数据库操作的具体实现方法,旨在为读者提供实用的参考案例。

首先,需安装MySQLdb驱动。请从官方网站下载适用于Python的MySQL驱动包,注意根据系统架构选择32位或64位版本。

安装完成后,在Python IDLE环境中导入MySQLdb模块以启用数据库连接功能。

>>>import MySQLdb

接下来,建立与数据库的连接对象:

>>>conn =MySQLdb.connect(host = '127.0.0.1',user= 'root',passwd='123456',db='test',port=3306,charset='utf8')
>>>

注意:host参数值可设为"localhost";参数名务必使用passwd而非password;port参数必须为int类型,例如3306不可加引号;charset需与数据库设定的字符集保持一致。

随后,创建游标对象以执行SQL语句:

>>>cur = conn.cursor()
>>>

演示如何执行单条数据插入命令:

>>>cur.execute("insert into msg (title,name,content) values ('python','zz','test mysql insert')")
1L #返回受影响的记录条数.
>>>conn.commit() #需要提交事务插入才会生效.
>>>

展示如何利用参数化方式批量插入多条数据:

>>>sql = "insert into msg (title,name,content) values (%s,%s,%s)" #定义一个sql语句
>>>cur.executemany(sql,[('title01','name01','content01'),('title02','name02','content02')])
2L
>>>conn.commit()
>>>

介绍通过for循环拼接SQL字符串来插入多条数据的实现方式:

>>>sql = "insert into msg (title,name,content) values"
>>>for i in range (100):
  >>> sql += "('id" + str(i) + "'," + "'name" + str(i) + "'," + "'content" + str(i) + "'),"
>>>sql = sql[:-1] #利用切片将最后的"," 删除.
>>>cur.execute(sql)
103L
>>>conn.commit()
>>>

演示执行数据删除命令的方法:

>>>cur.execute("delete from msg where title = 'title02' ")
1L
>>>conn.commit()
>>>

演示执行数据更新(更改)命令的方法:

>>>cur.execute("update msg set title='changedTitle' where title='title01'")
1L
>>>conn.commit()
>>>

演示执行数据查询命令的方法:

>>>cur.execute("select * from msg")
3L #返回记录条数
>>>

需要注意的是,Python的查询语句execute()仅返回受影响的记录条数,并不直接返回数据库中的实际数据值。若需获取具体数据,应如何操作?

我们需要借助游标对象的fetch相关方法来实现数据获取。

使用fetchone()方法可获取一条记录,该记录为当前游标指向行的下一行数据:

>>>cur.fetchone()
(1L, 'title01', 'name01', 'content01')

使用fetchmany(size=num)方法可获取多条指定数量的记录:

>>>cur.fetchmany(size=5)
((2L, 'python', 'ChenYL', 'insert content'), (3L, 'py03', 'name03', 'content03'), (4L, 'py04', 'name04', 'content04'), (5L, 'id0', 'name0', 'content0'), (7L, 'id2', 'name2', 'content2'))
>>>

注意:若查询结果集条数大于size参数,则仅返回size指定的条数;若结果集条数小于size,则返回实际查询到的所有记录。

使用fetchall()方法可从当前游标位置开始,获取直到查询结束的所有剩余记录:

>>>cur.fetchall()
105L
>>>

利用scroll()方法可手动移动游标位置:

>>>cur.scroll(1,mode="absolute")
>>>

注意:当mode设置为absolute时,游标将定位到表中的指定行(若参数为1,则定位到第一行),此时再调用fetchone()将获取第二行数据。

当mode设置为relative时,游标将相对于当前位置向下移动指定行数。例如,若游标当前在第三行,执行scroll后,游标将移动至第四行。

数据库操作完成后,务必记得关闭游标并断开数据库连接,以释放资源。

>>>cur.close()
>>>conn.close

注:上述示例中返回的记录条数及具体结果,均与数据库中实际存储的数据状态相关。

更多关于Python数据库操作的技巧,可参考本站专题:《Python常见数据库操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》。

希望本文所述的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 算法库。