Python 使用 PyMySQL 操作 MySQL 数据库完整指南

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

本文详细介绍 Python 中 PyMySQL 模块的使用方法,涵盖建立数据库连接、配置连接参数、创建游标对象及常用方法。通过具体代码示例演示数据的查询、插入、更新与删除操作,并对比 Java 说明 Python 在数据库处理上的简洁性,帮助开发者快速掌握 Python 操作 MySQL 的核心技巧。

PyMySQL 简介与连接建立

PyMySQL 是 Python 中用于操作 MySQL 数据库的第三方库,本文将具体介绍并演示该库的基本使用方法。

1. 建立数据库连接

通过 connect 函数中的 parameter 参数建立连接,连接成功后将返回 Connection 对象。


import pymysql

#建立数据库连接
connection = pymysql.connect(host = 'localhost',
        user = 'root',
        password = '123456',
        database = 'mydb',
        charset = 'utf8'
)
#print(connection)

pymysql.connect() 函数中常用的连接参数包括以下几种:

  • host:数据库主机名或 IP 地址
  • port:端口号
  • user:数据库账号
  • password 或 passwd:数据库密码
  • database 或 db:数据库名称
  • charset:编码方式

Connection 对象的重要方法包括:

  • close():关闭数据库连接
  • commit():提交数据库事务
  • rollback():回滚数据库事务
  • cursor():获取 Cursor 游标对象

游标对象的使用与数据提取

2. 创建游标

一个 Cursor 游标对象用于暂时保存 SQL 操作所影响的数据。在同一数据库连接中创建的游标,其引起的数据变化会立即反映在该连接的其他游标对象中。然而,不同数据库连接中的游标对象是否能及时反映变化,则取决于数据库事务管理。

Cursor 对象的基本方法和属性如下:

execute(operation,[parameters])

执行一条 SQL 语句,operation 为 SQL 语句,parameters 为其参数。返回值是整数,表示执行 SQL 语句影响的行数。

executemany(operation,[parameters])

批量执行 SQL 语句。

callproc(procname,[parameters])

执行存储过程,procname 是存储过程名。

使用 execute() 和 executemany() 方法查询后,通过以下提取方法获取结果集。

fetchone()

从结果集中返回一条记录的序列,若无记录则返回 None。

fetchmany([size=cursor.arraysize])

从结果集中返回小于或等于 size 的记录序列,若无记录则返回空序列,size 默认为整个游标的行数。

fetchall()

从结果集中返回所有的行数。

数据库操作实战:增删改查

3. 建立数据库(此处使用 Navicat)

创建一个名为 pydb 的数据库,表名为 user,包含字段 name 和 userid。

数据的查找


#建立数据库连接
connection = pymysql.connect(host = 'localhost',
        user = 'root',
        password = '123456',
        database = 'mydb',
        charset = 'utf8'
)
#print(connection)
try:
 #创建游标对象
 with connection.cursor() as cursor:
  #执行SQL操作
  sql = 'select name, userid from user where userid >%(id)s'
  cursor.execute(sql, {'id':0})
  #提取数据集
  result_set = cursor.fetchall()
  for row in result_set:
   print('id:{0} - name:{1}'.format(row[1],row[0]))
  #游标自动关闭
finally:
 #关闭连接
 connection.close()

数据插入


#数据增加
connection = pymysql.connect(host = 'localhost',
        user = 'root',
        password = '123456',
        database = 'mydb',
        charset = 'utf8'
)
try:
 with connection.cursor() as cursor:
  sql = 'insert into user (userid,name) values (%s,%s)'
  cursor.execute(sql,(3,'cc'))
  #affectcount = cursor.execute(sql,(3,'cc'))
  #print('影响的数据行数:{0}'.format(affectcount))
  #提交数据库事务
  connection.commit()
except pymysql.DatabaseError:
 #数据库事务回滚
 connection.rollback()
finally:
 connection.close()

执行结果:

数据更新


#数据更新
connection = pymysql.connect(host = 'localhost',
        user = 'root',
        password = '123456',
        database = 'mydb',
        charset = 'utf8'
)
#print(connection)
try:
 with connection.cursor() as cursor:
  sql = 'update user set name = %s where userid > %s'
  cursor.execute(sql,('Tom',2))
  #提交事务
  connection.commit()
  print('更新成功')
except pymysql.DatabaseError as e:
 connection.rollback()
 print(e)
finally:
 connection.close()

执行结果:

数据删除


#数据删除
connection = pymysql.connect(host = 'localhost',
        user = 'root',
        password = '123456',
        database = 'mydb',
        charset = 'utf8'
        )
try:
 with connection.cursor() as cursor:
  sql = 'delete from user where userid = %s'
  cursor.execute(sql,(1))
  #提交事务
  connection.commit()
  print("删除成功")
except pymysql.DatabaseError as e:
 connection.rollback()
 print(e)
finally:
 connection.close()

执行结果:

总结与对比

总体而言,与 Java 相比,Python 在数据库连接和对

数据集的处理上表现得非常简洁,主要优势在于易于使用和理解。正如那句名言:人生苦短,我用 Python!

总结

以上所述是小编给大家介绍的 Python 解析 pymysql 模块操作数据库的方法,希望对大家有所帮助!

相关标签:

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

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 算法库。