当前位置:首页>python>Python 连接 MySQL——PyMySQL 驱动

Python 连接 MySQL——PyMySQL 驱动

  • 2026-10-10 19:46:50
Python 连接 MySQL——PyMySQL 驱动
关注+星标,每天学习Python新技能

来源:网络

PyMySQL 是纯 Python 写的,安装和部署非常方便,也是很多 Python Web 框架(如 Django、Flask)常用的驱动。

1

PyMySQL vs mysql-connector

特性

PyMySQL

mysql-connector

作者

社区开源

MySQL官方

实现方式

纯Python(安装快,无需编译)

含 C 扩展 (通常性能略优)

安装

pip install PyMySQL

pip install mysql-connector

语法风格

几乎一样

占位符

%s

结论:两者都很稳定。PyMySQL 在虚拟环境和某些 Linux 系统上部署更省心,因为它不需要安装 C 编译器。

2

连接数据库

import pymysql# 1.建立连接,参数几乎和 mysql-connector 一样mydb = pymysql.connect(    host="127.0.0.1",    user="root",    password="123456",    database="my_db")# 2.创建游标对象mycursor = mydb.cursor()# 3.执行sql语句mycursor.execute("SHOW DATABASES")for i in mycursor:    print(i)# 4.关闭数据库mydb.close()

如上代码所示,PyMySQL的API和mysql-connector极其相似,如果已经掌握了mysql-connector的用法,完全可以照搬照套。

3

基本操作

  1. 建表

import pymysql# 1.连接数据库mydb = pymysql.connect(    host="127.0.0.1",    user="root",    password="123456",    database="my_db")# 2.创建游标对象mycursor = mydb.cursor()# 3.建表sql = """CREATE TABLE users (name VARCHAR(50) NOT NULL,age INT)"""mycursor.execute(sql)mydb.close()
  1. 插入数据

import pymysqlmydb = pymysql.connect(    host="127.0.0.1",    user="root",    password="123456",    database="my_db")mycursor = mydb.cursor()# 插入数据sql = """INSERT INTO users (name,age) VALUES (%s, %s)"""value = ("张三", 32)mycursor.execute(sql, value)mydb.commit()# 批量插入values = [("李四", 24), ("王五", 28)]mycursor.executemany(sql, values)mydb.commit()mydb.close()
  1. commit()和rollback()

这两个方法是数据库事务管理的核心。 操作数据库时,你的操作并不是“写一句生效一句”,而是被包裹在一个事务里。

  • 开启事务:在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。

  • commit() (提交):提交数据到数据库。执行 commit(),数据就永久保存了,哪怕下一秒断电,数据也在硬盘里。类似于存档。你按下存档键,系统把你在内存里的所有改动一次性写入硬盘。此时,数据真正落地,别人也能看到了。

  • rollback() (回滚):撤销当前事务中所有未提交的更改,把数据状态恢复到你开始这次事务之前的样子。类似于“撤回”或者“读档”。比如你的操作错了,你想反悔。rollback() 会把数据库恢复到这次操作之前的状态,就像什么都没发生过一样。

在写增删改(INSERT/UPDATE/DELETE)代码时,一定要用 try...except 包裹,成功就 commit,失败就 rollback,这是保护数据一致性常规方法。

import pymysqlfrom pymysql import Errordb = Nonecursor = Nonetry:    # 1.建立连接    db = pymysql.connect(        host="127.0.0.1",        user="root",        password="123456",        database="my_db"    )    with db.cursor() as cursor:        # 2.执行sql        sql = "INSERT INTO users (name,age) VALUES (%s,%s)"        value= ("赵六", 18)        cursor.execute(sql,value)        # 3.提交        db.commit()        print(f"插入成功")except Error as e:    print(f"错误:{e}")    if db:  # 4.回滚        db.rollback()finally:    if db:  # 5.关闭        db.close()

4

拓展

在 PyMySQL 中,连接数据库时可以设置 cursorclass=pymysql.cursors.DictCursor。如下:

import pymysqlmydb = pymysql.connect(    host="127.0.0.1",    user="root",    password="123456",    database="my_db",    cursorclass=pymysql.cursors.DictCursor)mycursor = mydb.cursor()mycursor.execute("SELECT * FROM users")result = mycursor.fetchall()print(result) 

默认情况输出元组:(('赵六', 18),),返回的数据不知道列名,只能靠下标访问。

使用 DictCursor 后,查出来的数据,变成了字典:[{'name': '赵六', 'age': 18}],可以用 data['name'] 来取值,便于转换成json格式,与前端进行数据交换时更轻松。

长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等

▲扫描二维码-免费领取

推荐阅读

MATLAB vs Python:谁才是建模界的“全能王”?

Python中的“==“与“is“:深入解析与Vibe Coding时代的优化实践

Python 中的==操作符 和 is关键字

MATLAB 和 Python 两大软件的较量,数学建模到底谁更厉害!

点击 阅读原文了解更多

最新文章

随机文章