Python 使用 PyMySQL 操作 MySQL 数据库完整指南
本文详细介绍 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 模块操作数据库的方法,希望对大家有所帮助!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













