news 2026/4/27 14:52:35

Python高级编程11:PyMySQL

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python高级编程11:PyMySQL

目录

前言

一、上节快速回顾

二、可视化管理工具 Navicat

如何安装Navicat

如何运行 SQL 文件?

三、视图(View)

3.1 什么是视图?

3.2 基本语法

3.3 使用示例

四、索引(Index)

4.1 为什么需要索引?

4.2 索引不是无脑加的

4.3 索引的三种类型

4.4 实际例子

五、PyMySQL 正式登场

5.1 什么是 PyMySQL?

5.2 连接数据库

5.3 完整使用流程

5.4 增删改查示例

六、补充:SQLite 和 PyMySQL 的区别

七、学习建议

1. 输出大于输入

2. 多看多拓展

3. 代码一定要多敲

4. 提问要有深度

总结


前言

前面几篇我们都是基于终端来实操数据库以及数据库里面的表操作,那么今天我们就来聊点实际干活里天天打交道的工具——PyMySQL
说白了,就是用Python代码去操控数据库。
数据库这块语法不算难,但比较繁琐,多敲多练才是王道。好了,废话不多说,开整!


一、上节快速回顾

先花30秒过一下上节讲啥了,免得接不上:

数据库表的三种关系:
1. 单对单
2. 单对多
3. 多对多

连接查询(JOIN):
左连接/右连接 --> 以对应方向为主表,没有的数据显示Null
内连接 --> 多表数据连在一起输出,没有的数据不输出

这个没搞懂的建议翻翻我上篇博客,连接查询在后面做项目用得特别多。点击此处回忆多个表的操作对你有帮助


二、可视化管理工具 Navicat

在说 PyMySQL 之前,先提一下 Navicat 这个东西。
以前我们操作数据库都是在终端命令行敲的,也不是不行,就是:

  • 操作麻烦,一堆指令要记
  • 不美观,看久了眼花

Navicat就是个可视化的数据库管理工具,点点点就能完成大部分操作。

优点:美观、高效、容易上手
缺点:比起纯命令行,占系统资源多一点

Navicat 新版是付费的,不过有试用版,够学习用了。


如何安装Navicat

以我自身经历推荐给大家一个免费白嫖Navicat的软件,这是GitHub开源的链接,然后根据他里面的步骤一步一步来,就能白嫖一个可用的Navicat,Github里面有很多开源并且好用的项目,很值得去研究和爽玩!!


如何运行 SQL 文件?

选中数据库 → 右键 → 运行 SQL 文件 → 选中你的.sql文件 → 执行
比你手动在终端里粘贴复制方便多了。


三、视图(View)

3.1 什么是视图?

当查询语句很长很复杂的时候,代码可读性会变得很差。
这时候就可以用视图(View)功能——它是一个虚拟的表,里面存的是写好了的查询语句。
可以理解成
视图就是一个命名了的变量
,存的是一条查询语句,用的时候直接调名字就行。


3.2 基本语法

CREATE VIEW 视图名 AS 查询语句;

3.3 使用示例

-- 创建一个视图,存储一个复杂的联表查询

CREATE VIEW v_user_orders AS SELECT u.name, o.order_id, o.total FROM users u LEFT JOIN orders o ON u.id = o.user_id WHERE o.status = 'completed';


-- 之后直接查视图,就像查普通表一样

SELECT * FROM v_user_orders;

这样代码清爽多了,也好维护。


四、索引(Index)

4.1 为什么需要索引?

打个比方——
你是图书馆管理员,正常情况下书是乱放的,想找一本书得从头翻到尾。
后来你弄了一张目录,按书名、类型排好序,找书的时候直接翻目录,速度快了好几倍。
索引的作用就是这个。


4.2 索引不是无脑加的

很多人容易犯这个错——听说索引能提高查询效率,就给所有字段都加一遍。
索引也是有成本的(占用空间、影响写入速度)。所以:

  • 数据量不大,查询需求不多 → 不用加
  • 数据经常查询、数据量大 → 加索引

4.3 索引的三种类型

索引类型说明
主键索引给主键加的,自动创建,唯一且非空
唯一索引数据必须唯一,可以为 NULL
普通索引单纯提高查询效率

4.4 实际例子

假设有个学生表,成千上万条数据。想查所有姓 "柳" 的同学:

-- 没有索引:每一行都扫一遍,慢

SELECT * FROM student WHERE name LIKE '柳%';


-- 给 name 加索引后:直接按目录找,快

CREATE INDEX idx_name ON student(name);

五、PyMySQL 正式登场

5.1 什么是 PyMySQL?

PyMySQL就是用 Python 连接数据库,并执行 SQL 语句的库。

pip install pymysql


5.2 连接数据库

import pymysql db = pymysql.connect( host='localhost', # IP 地址,本地就是 localhost user='root', # 用户名 passwd='123456', # 密码 port=3306, # 端口,默认 3306 database='test_db', # 数据库名 charset='utf8mb4' # 字符编码 )

返回的是一个数据库连接对象。


5.3 完整使用流程

import pymysql # 1. 连接数据库 db = pymysql.connect( host='localhost', user='root', passwd='123456', port=3306, database='test_db', charset='utf8mb4' ) # 2. 编写 SQL 语句 sql = "SELECT * FROM stu WHERE age > 20" # 3. 创建游标(用来执行 SQL) cursor = db.cursor() # 4. 执行 SQL cursor.execute(sql) # 5. 获取结果 result = cursor.fetchall() print(result) # 6. 提交(增删改需要,查询可选) db.commit() # 7. 关闭游标和数据库 cursor.close() db.close()

5.4 增删改查示例

import pymysql db = pymysql.connect( host='localhost', user='root', passwd='123456', port=3306, database='test_db', charset='utf8mb4' ) cursor = db.cursor() # 查 sql = "SELECT * FROM stu" cursor.execute(sql) for row in cursor.fetchall(): print(row) # 增 sql = "INSERT INTO stu(name, sex, age) VALUES('梦山', '男', 29)" cursor.execute(sql) db.commit() # 改 sql = "UPDATE stu SET age = 30 WHERE name = '梦山'" cursor.execute(sql) db.commit() # 删 sql = "DELETE FROM stu WHERE name = '梦山'" cursor.execute(sql) db.commit() cursor.close() db.close()

注意:增删改操作后一定要db.commit(),否则数据不会真正保存到数据库。


六、补充:SQLite 和 PyMySQL 的区别

对比项SQLitePyMySQL
类型小型文件数据库大型关系型数据库
适用场景本地数据、小型应用Web 项目、企业级应用
是否需要单独安装不需要需要 MySQL 服务
并发能力一般

SQLite 适合练手和小型项目,真正干活基本都是 MySQL。


七、学习建议

1. 输出大于输入

知识只是听了,不代表会了。能讲出来、写出来,才是真正掌握了。
建议:

  • 写笔记(复习 + 思考)→ 尝试用自己的话描述
  • 尝试讲给别人听,教是最好的学

2. 多看多拓展

多逛技术博客网站,例如博客园、CSDN、Github,学习别人写法,看多了思路自然开阔。

3. 代码一定要多敲

看十遍不如敲一遍,敲多了自然就有感觉,肌肉记忆比脑子记忆靠谱。

4. 提问要有深度

提出问题 + 解决方案 + 相应数据 + 备用方案,才最受欢迎。


总结

这篇文章主要梳理了以下内容:

  • Navicat可视化数据库工具的基本使用
  • 视图(View)的概念和使用
  • 索引(Index)的三种类型和适用场景
  • PyMySQL连接数据库的完整流程(增删改查)

数据库不难,但用得多,多练才是王道。
编程一定要多敲多练,祝各位早日学有所成!


如果这篇文章对你的学习道路有帮助的话,动动发财的小手点个小赞赞吧,感谢各位义父!!!

学习永无止境,唯有实操才能蜕变,一起加油兄弟们!!!

每日励志文案:

哪怕输一百次,也希望你有开始一百零一次的勇气

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 14:52:30

YOLO26红外无人机识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+远程环境部署)

摘要 针对红外场景下无人机目标检测任务,本文基于YOLO26框架构建了一套高精度识别系统。实验采用包含5019张训练图像与1233张验证图像的红外无人机数据集,类别为单一目标drone。模型训练后,在验证集上取得了mAP50为0.981、Precision为0.986、…

作者头像 李华
网站建设 2026/4/27 14:46:53

猫抓插件:终极浏览器资源嗅探指南,轻松下载网页视频和音频

猫抓插件:终极浏览器资源嗅探指南,轻松下载网页视频和音频 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法保存网…

作者头像 李华
网站建设 2026/4/27 14:46:25

别再只懂.mp4后缀了!手把手带你用Hex编辑器‘解剖’MP4文件,看懂ftyp、moov、mdat这些Box到底存了什么

用十六进制编辑器拆解MP4文件:从二进制字节到视频播放的奥秘 当你在手机或电脑上双击一个MP4文件时,播放器几乎瞬间就能开始播放视频。但你是否想过,这个看似简单的文件内部究竟藏着怎样的秘密?本文将带你用十六进制编辑器直接&qu…

作者头像 李华
网站建设 2026/4/27 14:46:25

MobileNetV2轻量化模型在动物重识别中的边缘部署实践

1. 项目概述在野生动物监测和畜牧业管理中,动物个体识别是一项基础而关键的任务。传统的人工识别方法效率低下且容易出错,而基于深度学习的计算机视觉技术为解决这一问题提供了新的可能。然而,现有的高性能深度学习模型通常需要强大的计算资源…

作者头像 李华