利用Python连接MySQL超详细实战教程

 更新时间:2026年02月07日 08:29:05   作者:盼哥PyAI实验室  
mysql是关系型数据库,支持大型的数据库,可以处理拥有上千万条记录的大型数据库,这篇文章主要介绍了利用Python连接MySQL的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

在 Python 开发中,数据库基本是绕不开的核心环节,而 MySQL + PyMySQL 是最常见、最稳定、最轻量的组合。
很多同学在刚开始连接数据库时,经常会遇到连不上、编码错误、游标报错等问题。

这篇文章我会用非常清晰的方式带你完成:

  • PyMySQL 安装
  • 数据库连接参数配置
  • 创建连接对象
  • 创建游标对象
  • 执行 SQL 查询
  • 执行插入语句
  • 完整代码可直接运行

内容全部来自实战总结,照着敲你就能用!

一、安装 PyMySQL

PyMySQL 是 Python 中用于连接 MySQL 的轻量级库,安装方式非常简单:

pip install pymysql

安装完成后我们就可以在项目中使用它进行数据库操作。

二、准备数据库连接配置

连接 MySQL 需要提供登录信息,我们通常将参数写成一个字典,方便管理:

import pymysql

db_confing = {
    'host': '127.0.0.1',   # 服务器地址
    'port': 3306,          # MySQL 端口
    'user': 'root',        # 用户名
    'password': 'root',    # 密码
    'db': 'wp',       # 需要连接的数据库
    'charset': 'utf8',     # 字符编码
}

⚠ 这些参数必须真实存在,否则连接会失败。

三、建立数据库连接

PyMySQL 最核心的一句代码:

数据库对象 = pymysql.connect(**db_confing)
print(数据库对象)

这里使用 **db_confing 是 Python 字典解包语法,等同于:

host='127.0.0.1', port=3306, user='root' ...

执行后会得到类似:

<pymysql.connections.Connection object at 0xxx>

代表连接成功。

四、创建游标对象(Cursor)

游标对象用来 执行 SQL接收查询结果

游标对象 = 数据库对象.cursor()
print(游标对象)

每一次查询、插入,都必须通过游标来完成。

五、执行 SQL 查询(SELECT)

下面是最常用的查询模式:

# 创建游标对象
游标对象 = 数据库对象.cursor()

# 写 SQL 语句
sql = 'SELECT * FROM hk'

# 执行 SQL
游标对象.execute(sql)

# 接受所有结果
返回结果 = 游标对象.fetchall()

# 打印结果
for row in 返回结果:
    print(row)

# 关闭
游标对象.close()
数据库对象.close()

这里 fetchall() 会返回一个 元组列表,每一行数据都是一个元组。

六、封装查询函数(实战)

def select():
    sql = 'select * from demo'
    游标对象.execute(sql)
    返回结果 = 游标对象.fetchall()
    print(返回结果)

你可以在需要的地方直接调用:

select()

七、执行插入(INSERT + commit)

插入与查询不同,执行后必须 commit(),否则无法真正写入数据库。

def insert():
    name = input('请输入你的姓名:')
    sql = f'insert into demo value(null,"{name}")'
    游标对象.execute(sql)
    数据库对象.commit()  # ✔️ 必须提交

⚠ 注意字符串需要加引号,否则 SQL 会报错。

下面我在你 刚刚那篇 CSDN 博客的基础上,继续追加两个核心模块:

DELETE(删除数据)

UPDATE(修改数据)

格式依旧符合 CSDN 爆款文章结构,你可以直接复制回博客中,放在原文 “七、执行插入(INSERT)” 的后面即可。

八、执行删除(DELETE)

删除操作同样需要 commit() 才能生效。

最推荐写成一个交互式函数:输入要删除的 ID,然后执行删除。

def delete():
    delete_id = input('请输入要删除的ID:')
    sql = f'DELETE FROM demo WHERE id = {delete_id}'
    游标对象.execute(sql)
    数据库对象.commit()
    print(f'ID 为 {delete_id} 的记录已删除')

⚠ 注意:

  • DELETE 操作必须加 WHERE 条件
  • 否则可能会删光整个表!

示例输入:

请输入要删除的ID:3

输出:

ID 为 3 的记录已删除

九、执行修改(UPDATE)

UPDATE 同样需要提交才能生效。

这是一个最常见的「根据 ID 修改姓名」的例子:

def update():
    update_id = input('请输入要修改的ID:')
    new_name = input('请输入新的姓名:')

    sql = f'UPDATE demo SET name = "{new_name}" WHERE id = {update_id}'
    游标对象.execute(sql)
    数据库对象.commit()

    print(f'ID 为 {update_id} 的记录已成功修改')

执行时会有两次输入:

请输入要修改的ID:2
请输入新的姓名:王五

输出:

ID 为 2 的记录已成功修改

十、最终完整版(增删改查四合一)

你可以在原文的最终代码中加入以下内容,结构完全统一:

def select():
    sql = 'select * from demo'
    游标对象.execute(sql)
    返回结果 = 游标对象.fetchall()
    print(返回结果)

def insert():
    name = input('请输入你的姓名:')
    sql = f'insert into demo value(null,"{name}")'
    游标对象.execute(sql)
    数据库对象.commit()
    print('插入成功')

def delete():
    delete_id = input('请输入要删除的ID:')
    sql = f'DELETE FROM demo WHERE id = {delete_id}'
    游标对象.execute(sql)
    数据库对象.commit()
    print(f'ID 为 {delete_id} 的记录已删除')

def update():
    update_id = input('请输入要修改的ID:')
    new_name = input('请输入新的姓名:')
    sql = f'UPDATE demo SET name = "{new_name}" WHERE id = {update_id}'
    游标对象.execute(sql)
    数据库对象.commit()
    print(f'ID 为 {update_id} 的记录已成功修改')

总结:增删改查你已经全会了!

至此为止,你已经拥有:

  • ✔ SELECT 查询
  • ✔ INSERT 插入
  • ✔ DELETE 删除
  • ✔ UPDATE 修改
  • ✔ commit 提交机制
  • ✔ 游标对象生命周期
  • ✔ 完整数据库交互代码

到此这篇关于利用Python连接MySQL的文章就介绍到这了,更多相关Python连接MySQL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python语言有接口概念吗(实例详细解释)

    Python语言有接口概念吗(实例详细解释)

    Python通过鸭子类型实现接口,而Go和Java则通过显式定义接口,Python的接口是隐式的,只要对象有相应的方法,就可以被视为符合接口,本文介绍Python语言有接口概念吗的相关知识,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • 如何将Python列表转换为字符串

    如何将Python列表转换为字符串

    字符串是Python中最常用的数据类型,下面这篇文章主要给大家介绍了关于如何将Python列表转换为字符串的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • Python高效实现删除Excel重复数据的三种方法

    Python高效实现删除Excel重复数据的三种方法

    在 Excel 数据处理过程中,删除重复数据是最常见的数据清理操作之一,使用 Python 进行 Excel 去重更加高效、可靠,并支持批量处理和自动化,下面我们就来看看具体的实现方法吧
    2025-12-12
  • python使用心得之获得github代码库列表

    python使用心得之获得github代码库列表

    最近接了个项目,要求获得github的repo的api,度娘了一下,有不少文章介绍,总结了本文,分享给大家并附上代码
    2014-06-06
  • Python标准库asyncio用法完全指南

    Python标准库asyncio用法完全指南

    Python asyncio是构建高性能异步应用程序的终极工具,通过协程机制实现真正的并发编程,下面这篇文章主要介绍了Python标准库asyncio用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-12-12
  • Pytorch Tensor基本数学运算详解

    Pytorch Tensor基本数学运算详解

    今天小编就为大家分享一篇Pytorch Tensor基本数学运算详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 基于sklearn实现Bagging算法(python)

    基于sklearn实现Bagging算法(python)

    这篇文章主要为大家详细介绍了基于sklearn实现Bagging算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • python生成密码字典的方法

    python生成密码字典的方法

    今天小编就为大家分享一篇python生成密码字典的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • opencv实现回形遍历像素算法

    opencv实现回形遍历像素算法

    这篇文章主要为大家详细介绍了opencv实现回形遍历像素算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • python 使用GDAL实现栅格tif转矢量shp的方式小结

    python 使用GDAL实现栅格tif转矢量shp的方式小结

    今天通过本文给大家分享python 使用GDAL实现栅格tif转矢量shp的方式小结,计划是使用栅格转矢量的方式,将栅格数据转为矢量shp文件,然后进行矢量切片,使用Mapbox进行前端动态渲染,具体内容详情跟随小编一起看看吧
    2021-08-08

最新评论