Python高级编程11:PyMySQL

张开发
2026/4/27 14:52:37 15 分钟阅读

分享文章

Python高级编程11:PyMySQL
目录前言一、上节快速回顾二、可视化管理工具 Navicat如何安装Navicat如何运行 SQL 文件三、视图View3.1 什么是视图3.2 基本语法3.3 使用示例四、索引Index4.1 为什么需要索引4.2 索引不是无脑加的4.3 索引的三种类型4.4 实际例子五、PyMySQL 正式登场5.1 什么是 PyMySQL5.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开源的链接然后根据他里面的步骤一步一步来就能白嫖一个可用的NavicatGithub里面有很多开源并且好用的项目很值得去研究和爽玩如何运行 SQL 文件选中数据库 → 右键 → 运行 SQL 文件 → 选中你的.sql文件 → 执行比你手动在终端里粘贴复制方便多了。三、视图View3.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;这样代码清爽多了也好维护。四、索引Index4.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 什么是 PyMySQLPyMySQL就是用 Python 连接数据库并执行 SQL 语句的库。pip install pymysql5.2 连接数据库import pymysql db pymysql.connect( hostlocalhost, # IP 地址本地就是 localhost userroot, # 用户名 passwd123456, # 密码 port3306, # 端口默认 3306 databasetest_db, # 数据库名 charsetutf8mb4 # 字符编码 )返回的是一个数据库连接对象。5.3 完整使用流程import pymysql # 1. 连接数据库 db pymysql.connect( hostlocalhost, userroot, passwd123456, port3306, databasetest_db, charsetutf8mb4 ) # 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( hostlocalhost, userroot, passwd123456, port3306, databasetest_db, charsetutf8mb4 ) 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连接数据库的完整流程增删改查数据库不难但用得多多练才是王道。编程一定要多敲多练祝各位早日学有所成如果这篇文章对你的学习道路有帮助的话动动发财的小手点个小赞赞吧感谢各位义父学习永无止境唯有实操才能蜕变一起加油兄弟们每日励志文案哪怕输一百次也希望你有开始一百零一次的勇气

更多文章