当前位置: 首页 > news >正文

MySQL高效开发规范

1.基础规范
数据库字符集默认使用utf8mb4,兼容utf8,并支持存储emoji表情等四字节内容
禁止在线上生产环境做数据库压力测试
禁止从测试、开发环境、本机直连线上生产数据库
禁止在数据库中存储明文密码
禁止在数据库中存储图片、文件等大数据
禁止将业务日志实时保存到数据库,建议保存到日志文件,对于统计后的结果再存放到mysql中
禁止线上核心业务使用mysql存储过程、视图、触发器、Event、InnoDB外键约束等,这些容易将业务逻辑和db耦合在一起,而且在MySQL的这些特性中存在严重BUG
业务部门的推广活动,请提前通知dba进行服务和访问评估。

2.库表设计
库名、表名、字段名必须使小写字母,并采用下划线分割;对相关功能的表应当使用相同前缀,如job_xxx,前缀通常为库名或依赖主实体对象:
数据库名称约定:db58_xxx
数据库表默认存储引擎为InnoDB,所有环境禁止使用MyISAM、Memory等其他存储引擎
所有的表及字段都必须有备注,详细说明表及字段的含义
涉及货币金额或其他精度敏感的数据必须使用定点数DECIMAL替代FLOAT和DOUBLE
库名、表名、字段名禁止使用MySQL保留字,如date、like、desc、return等
控制表字段数,单表不超过50个纯INT/20个VARCHAR(10)字段等同存储体积的字段数,上限控制在20~50
字段长度只分配真正需要的空间
问题:使用VARCHAR(5) 和VARCHAR(200) 存储’hello’的磁盘空间开销是一样的,使用更短的列有什么优势吗?
更大的定义列会消耗更多的内存,因为MySQL通常会分配固定大小的内存块来保存内部值,尤其是使用内存临时表进行排序或操作时会特别糟糕

3.索引设计
基本规则:索引不是越多越好,能不添加的索引尽量不要添加,过多的索引会严重降低数据插入和更新的效率,并带来更多的读写冲突和死锁!
索引名称必须使用小写,普通索引按照“idx_字段名_字段名[_字段名]”进行命名,唯一索引按照“uniq_字段名_字段名[_字段名]”进行命名”
表必须有主键,推荐使用独立于业务的AUTO_INCREMENT列或全局ID生成器做主键,禁止使用多字段做联合主键
不使用UUID/MD5/HASH等函数生成的无规则值做主键,效率极差
索引数量控制
单张表中索引数量不超过5个
单个索引中的字段数不超过5个
对字符串使用前缀索引,前缀索引长度不超过10个字符
索引字段的顺序需要考虑每个字段去重之后的数量,区分度最大的【个数最多的】放在前面。
合理创建联合索引(避免冗余),符合最左前缀原则:(a,b,c) 相当于 (a) 、(a,b) 、(a,b,c)
可能需要添加索引的字段:
ORDER BY,GROUP BY,DISTINCT的字段需要添加在索引的后面
UPDATE、DELETE语句需要根据WHERE条件添加索引
对于JOIN操作,需要在JOIN字段上建立索引
线上慎用FORCE INDEX,使用前需要和DBA沟通,并得到DBA的测试允许
线上OLTP系统中禁止使用外键,高并发时极易引起死锁等问题
索引使用禁忌
不使用%前导的查询,如like “%ab”
不使用负向查询,如not in/not like/<>
不在低区分度的列上建立索引,例如“性别”
不在索引列进行数学运算和函数运算
示例:假设在表tab中id建立了索引
Select col_A,col_B from tab where id + 1 > 10001 不会使用索引
Select col_A,col_B from tab where id > 10001 – 1 会使用索引

4.SQL优化
线上尽量少使用大SQL,可能一条大SQL就把整个数据库堵死,将复杂SQL拆分为多条简单SQL,化繁为简
一条SQL只能在一个CPU上运算,如果SQL比较复杂执行效率会非常低
简单SQL缓存命中率更高
减少锁表时间
充分利用多核CPU,提高并发效率
减少MySQL端的数学运算和逻辑判断,避免SQL语句出现md5()、order by rand()等
尽量少用SELECT * ,只取需要的数据列, 避免无谓的IO、CPU和网络开销
WHERE条件中,同一字段改写OR为IN(),IN包含的值不应过多,默认不超过200个,IN里禁止使用子查询
过滤表记录合并且不去重的情况,改写UNION为UNION ALL
减少使用拼接SQL,使用预编译语句,降低SQL注入概率
WHERE条件中的非等值条件(IN、BETWEEN、<、<=、>、>=)会导致使用不了联合索引的后续字段,注意避免
WHERE条件比较,字段类型和传入值必须保证类型一致,避免隐式转换
示例:
字段: code varchar(50) NOT NULL COMENT ‘编码’ #code上建立了索引
SELECT id,name,addr from tab_name where code=10001; 不会使用索引
SELECT id,name,addr from tab_name where code=‘10001’; 会使用索引
Limit分页优化
传统分页:
Select * from table limit 10000,10;
LIMIT原理:
Limit 10000,10 偏移量越大则越慢
推荐分页:
分页方式一:
Select * from table WHERE id>=23423 limit 11; #10+1 (每页10条)
Select * from table WHERE id>=23434 limit 11;
分页方式二:
Select * from table WHERE id >= ( select id from table limit 10000,1 ) limit 10;
分页方式三:
Select * from table INNER JOIN (SELECT id from table limit 10000,10) USING(id)
分页方式四:
程序取ID: Select id from table limit 10000,10;
Select * from table WHERE ID in(123,456…);

相关文章:

MySQL高效开发规范

1.基础规范 数据库字符集默认使用utf8mb4&#xff0c;兼容utf8&#xff0c;并支持存储emoji表情等四字节内容 禁止在线上生产环境做数据库压力测试 禁止从测试、开发环境、本机直连线上生产数据库 禁止在数据库中存储明文密码 禁止在数据库中存储图片、文件等大数据 …...

MySQL基础面试通关秘籍(附高频考点解析)

文章目录 一、事务篇&#xff08;必考重点&#xff09;1.1 事务四大特性&#xff08;ACID&#xff09;1.2 事务实战技巧 二、索引优化大法2.1 索引类型全家福2.2 EXPLAIN命令实战 三、存储引擎选型指南3.1 InnoDB vs MyISAM 终极对决 四、SQL优化实战手册4.1 慢查询七宗罪4.2 分…...

信贷风控笔记5——风控贷中策略笔记(面试准备13)

1.划分贷前贷中的标准&#xff1a;授信通过 2.框架&#xff1a;贷中风险管理&#xff1a;用信审批/贷中风险预警 存量客户运营&#xff1a;不仅考虑风险&#xff0c;还要考虑客户需求、体验等因素&#xff0c;通过精细化的客户分层和差异化的权益调整方式&#xff…...

第五章:Linux用户管理

Linux系统中超级用户是root&#xff0c;通过超级用户root可以创建其它的普通用户&#xff0c;Linux是一个支持多用户的操作系统。在实际使用中&#xff0c;一般会分配给开发人员专属的账户&#xff0c;这个账户只拥有部分权限&#xff0c;如果权限太高&#xff0c;操作的范围过…...

低空态势感知:基于AI的DAA技术是低空飞行的重要安全保障-机载端地面端

低空态势感知&#xff1a;基于AI的DAA技术是低空飞行的重要安全保障-机载端&地面端 目前空中已经有大量无人机和其他飞机&#xff0c;未来几年还会有空中出租车。目前&#xff0c;美国每年平均发生 15 到 25 起空中相撞事故。 检测和避免 (DAA) 检测和避免 (DAA) 技术可…...

Web服务器怎么压测?可用什么软件?

针对Web服务器的压力测试,需要系统性地模拟真实用户请求,评估服务器在高并发场景下的性能表现(如吞吐量、响应时间、错误率等)。以下是完整的压测方案和工具选型指南: 一、压测核心指标 指标类型关键指标健康阈值参考并发能力最大支持并发用户数(Concurrency)错误率<…...

IntelliJ IDEA克隆项目失败的解决方法

IntelliJ IDEA克隆项目失败。 咨询AI后&#xff0c;在它建议下&#xff0c;在Windows PowerShell中执行语句&#xff0c;成功克隆。 操作流程如下&#xff1b; 1. 检查网络连接 确保你的网络连接稳定&#xff0c;尝试更换网络环境或使用有线连接代替无线连接。 2. 删除项目 …...

云存储最佳实践

大家好,我是Petter Guo 对Coding充满热情的&#x1f402;&#x1f40e;&#xff0c;坚信实操出真知。在这里&#xff0c;你将听到最真实的经验分享&#xff0c;绝不贩卖焦虑&#xff0c;只提供积极向上的硬核干货&#xff0c;助你一路前行&#xff01; 如果对你有帮助, 请点赞…...

矫平机技术新维度:材料科学、数字孪生与零缺陷制造

矫平机技术正经历从"被动修正"到"主动预判"的范式革命。本文聚焦三大前沿方向&#xff0c;揭示如何通过跨学科融合实现金属板材加工的极限突破。 一、微观组织调控&#xff1a;材料科学与矫平工艺的量子纠缠 晶粒定向技术 通过矫平过程中的应变诱导取向&a…...

Dify中使用插件LocalAI配置模型供应商报错

服务器使用vllm运行大模型&#xff0c;今天在Dify中使用插件LocalAI配置模型供应商后&#xff0c;使用工作流的时候&#xff0c;报错&#xff1a;“Run failed: PluginInvokeError: {"args":{},"error_type":"ValueError","message":&…...

第二天的尝试

目录 一、每日一言 二、练习题 三、效果展示 四、下次题目 五、总结 一、每日一言 清晰的明白自己想要的是什么&#xff0c;培养兴趣也好&#xff0c;一定要有自己的一技之长。我们不说多优秀&#xff0c;但是如果父母需要我们出力&#xff0c;不要只有眼泪。 二、练习题 对…...

专业版降重指南:如何用Python批量替换同义词?自动化操作不香嘛?

还在手动一个个改词降重&#xff1f;&#x1f440; 是兄弟就别再CtrlF了&#xff0c;来试试Python自动同义词替换批量降重法&#xff0c;简直是论文改写效率神器&#xff01; 这篇我们来一波实操干货&#xff1a; &#x1f449; 如何用Python写出一个自动替换论文关键词的脚本…...

动态图标切换的艺术

动态图标切换的艺术 - Vue实战指南 图标切换的本质:状态与视觉的双重舞蹈 在前端开发中,图标切换就像我们日常生活中的换装游戏。想象一下,当你按下卧室的开关,灯泡从暗变亮;当你打开衣柜,选择不同场合的着装。图标切换的核心就是根据状态变化呈现不同的视觉效果。 方…...

最小二乘法:从房价预测到损失计算

以下通过一个简单例子说明 y = w x + b y = wx + b y=...

C++ asio网络编程(7)增加发送队列实现全双工通信

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、数据节点设计二、封装发送接口介绍锁mutex和加锁工具lock_guard回调函数的实现为什么在回调函数中也要加锁修改读回调 总结 前言 前文介绍了通过智能指针实…...

【C语言字符函数和字符串函数(一)】--字符分类函数,字符转换函数,strlen,strcpy,strcat函数的使用和模拟实现

目录 一.字符分类函数 1.1--字符分类函数的理解 1.2--字符分类函数的使用 二.字符转换函数 2.1--字符转换函数的理解 2.2--字符转换函数的使用 三.strlen的使用和模拟实现 3.1--strlen的使用演示 3.2--strlen的返回值 3.3--strlen的模拟实现 四.strcpy的使用和模拟实现…...

ADC深入——SNR、SFDR、ENOB等概念

目录 SNR&#xff08;Spurious‑Free Dynamic Range 信噪比&#xff09; ENOB&#xff08;Effective Number Of Bits 有效位&#xff09; SFDR&#xff08;Spurious‑Free Dynamic Range&#xff09; 感觉SNR和SFDR差不多&#xff1f;看看下图 输入带宽 混叠 带通采样/欠…...

逻辑回归(二分类)

一.逻辑回归的由来 逻辑回归不是一个回归的算法&#xff0c;不是用来做预测的&#xff0c;逻辑回归是一个分类的算法&#xff0c;那为什么不叫逻辑分类&#xff1f;因为逻辑回归算法是基于多元线性回归的算法&#xff08;多元线性回归&#xff1a;yw0x0w1x1.....wnxn)。正因为…...

深入 Linux 内核:GPU Runtime Suspend 源码和工作流程全面分析

这是系列文章中第二篇&#xff0c;我们将分析完整的 Linux runtime suspend 操作流程&#xff0c;以 Vivante GPU 为例&#xff0c;展示开发者如何通过内核程序实现和调试 runtime PM 机制。 一、内核中的 Runtime PM 工作流程概览 当调用者执行: pm_runtime_put(dev);时&…...

深入理解 this 指向与作用域解析

引言 JavaScript 中的 this 关键字的灵活性既是强大特性也是常见困惑源。理解 this 的行为对于编写可维护的代码至关重要&#xff0c;但其动态特性也会让我们感到困惑。 与大多数编程语言不同&#xff0c;JavaScript 的 this 不指向函数本身&#xff0c;也不指向函数的词法作…...

c++20引入的三路比较操作符<=>

目录 一、简介 二、三向比较的返回类型 2.1 std::strong_ordering 2.2 std::weak_ordering 2.3 std::partial_ordering 三、对基础类型的支持 四、自动生成的比较运算符函数 4.1 std::rel_ops的作用 4.2 使用<> 五、兼容他旧代码 一、简介 c20引入了三路比较操…...

Spring框架(三)

目录 一、JDBC模板技术概述 1.1 什么是JDBC模板 二、JdbcTemplate使用实战 2.1 基础使用&#xff08;手动创建对象&#xff09; 2.2 使用Spring管理模板类 2.3 使用开源连接池&#xff08;Druid&#xff09; 三、模拟转账开发 3.1 基础实现 3.1.1 Service层 3.1.2 Da…...

CS016-4-unity ecs

【37】将系统转换为任务 Converting System to Job 【Unity6】使用DOTS制作RTS游戏|17小时完整版|CodeMonkey|【37】将系统转换为任务 Converting System to Job_哔哩哔哩_bilibili a. 将普通的方法&#xff0c;转化成job。第一个是写一个partial struct xxx&#xff1b;第二…...

CMU-15445(4)——PROJECT#1-BufferPoolManager-Task#2

PROJECT#1-BufferPoolManager Task #2 - Disk Scheduler 在前一节我实现了 TASK1 并通过了测试&#xff0c;在本节中&#xff0c;我将逐步实现 TASK2。 如上图&#xff0c;Page Table&#xff08;页表&#xff09;通过哈希表实现&#xff0c;用于跟踪当前存在于内存中的页&am…...

[原创](计算机数学)(The Probability Lifesaver)(P10): 生日概率问题.

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…...

计算机组成原理——数据的表示

2.1数据的表示 整理自Beokayy_ 1.进制转换 十六进制与二进制的转换 一位十六进制等于四位二进制 四位二进制等于一位十六进制 0x173A4C0001 0111 0011 1010 0100 1100 十六进制与十进制的转换 十六转十&#xff1a;每一位数字乘以相应的16的幂再相加 十转十六&#xff1a…...

源码:处理文件格式和字符集的相关代码(3-3)

总入口&#xff1a;源码&#xff1a;处理文件格式和字符集的相关代码&#xff08;3-1&#xff09;-CSDN博客 目录 六、预览&#xff08;正确显示文本文件&#xff09; 6.1 总体逻辑 6.2 二进制显示 6.3 文本显示 六、预览&#xff08;正确显示文本文件&#xff09; 6.1 总…...

Spring MVC 对 JavaWeb 的优化:从核心组件到注解

Spring MVC 功能组件与注解对 JavaWeb 的优化 文章介绍&#xff1a; SpringMVC对比JavaWeb优势&#xff0c;Spring MVC 通过引入功能组件和注解&#xff0c;从多个维度对传统 JavaWeb 开发进行了优化&#xff0c;显著提升了开发效率和代码可维护性。以下是关键优化点的详细对…...

Mysql数据库详解

在cmd中选择数据库操作用 USE test_db; 相关概念 Sql是操作关系型数据库的编程语言 关系型数据库&#xff1a;建立在关系模型基础上&#xff0c;由多张相互连接的二维表组成的数据库 语法 sql语法分类 DDL-数据库操作 创建&#xff1a;CREATE DATABASE db_name;创建完整…...

R1 快开门式压力容器操作证备考练习题及答案

R1 快开门式压力容器操作证备考练习题及答案 判断题 1、快开门式压力容器的快开门应设计成有延时功能的联锁装置。&#xff08;√&#xff09; 解析&#xff1a;延时功能的联锁装置可以防止在容器内有压力时过早开启快开门&#xff0c;避免发生危险&#xff0c;保障设备和人…...

python打卡训练营Day27

作业&#xff1a; 编写一个装饰器 logger&#xff0c;在函数执行前后打印日志信息&#xff08;如函数名、参数、返回值&#xff09; logger def multiply(a, b):return a * bmultiply(2, 3) # 输出: # 开始执行函数 multiply&#xff0c;参数: (2, 3), {} # 函数 multiply …...

【RabbitMQ】消息丢失问题排查与解决

RabbitMQ 消息丢失是一个常见的问题&#xff0c;可能发生在消息的生产、传输、消费或 Broker 端等多个环节。消息丢失的常见原因及对应的解决方案&#xff1a; 一、消息丢失的常见原因 1. 生产端&#xff08;Producer&#xff09;原因 (1) 消息未持久化 原因&#xff1a;生产…...

idea 保证旧版本配置的同时,如何从低版本升到高版本

文章目录 前言idea 保证旧版本配置的同时,如何从低版本升到高版本1. 备份项目2. 下载最新的idea3. 安装安装包4. 导入idea2019旧配置5. 验证前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,…...

校园社区小程序源码解析

基于ThinkPHP、FastAdmin和UniApp开发的校园社区小程序源码&#xff0c;旨在为校园内的学生和教职员工提供一个便捷的在线交流和服务平台。 该小程序前端采用UniApp进行开发&#xff0c;具有良好的跨平台兼容性&#xff0c;可以轻松发布到iOS和Android平台。同时&#xff0c;后…...

Windows11安装rockerMq5.0+以及springboot集成rockerMq

安装jdk17&#xff0c;rockermq5.0需要jdk11&#xff0c;我这里使用jdk17 配置系统环境变量 ROCKETMQ_HOME D:\work\mmq\rocketmq-all-5.2.0-bin-release 编写启动脚本 D: cd D:\work\mmq\rocketmq-all-5.2.0-bin-release\bin start mqnamesrv.cmd start mqbroker.cmd -n 127.0…...

ros2中自定义的package查不到?

在ros2中自定义的package功能包&#xff0c;使用命令&#xff1a;ros2 pkg list无法查找到自己的功能包&#xff1f; 首先&#xff0c;利用ros2 pkg create命令创建好功能包之后要利用colcon build命令进行编译&#xff0c;编译成功之后&#xff0c;在当前路径需要运行命令&am…...

【Python CGI编程】

Python CGI&#xff08;通用网关接口&#xff09;编程是早期Web开发中实现动态网页的技术方案。以下是系统化指南&#xff0c;包含核心概念、实现步骤及安全实践&#xff1a; 一、CGI 基础概念 1. 工作原理 浏览器请求 → Web服务器&#xff08;如Apache&#xff09; → 执行…...

idea运行

各种小kips Linuxidea上传 Linux 部署流程 1、先在idea打好jar包&#xff0c;clean之后install 2、在Linux目录下&#xff0c;找到对应项目目录&#xff0c;把原来的jar包放在bak文件夹里面 3、杀死上一次jar包的pid ps -ef|grep cliaidata.jar kill pid 4、再进行上传新的jar…...

2025年渗透测试面试题总结-安恒[社招]售前工程师(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 安恒[社招]售前工程师 1. 自我介绍 2. 离职原因 3. 掌握的法律法规 4. 等级保护实施框架 5. 行业方…...

[ linux-系统 ] 命令行参数 | 环境变量

命令行参数 命令行参数是指用户在启动程序时通过命令行传递给程序的参数。这些参数可以用于控制程序的行为、传递输入数据或配置选项。 在 C/C 中&#xff0c;命令行参数通过 main 函数的参数传递 命令行参数列表 argc:参数的个数 argv[]&#xff1a;参数的清单 为什么要…...

Spring三级缓存的作用与原理详解

在Spring框架中&#xff0c;Bean的创建过程涉及到了三级缓存机制。这个机制主要是为了提高单例模式下bean实例化和依赖注入的效率。本文将深入探讨Spring中的三级缓存&#xff0c;以及其在bean生命周期中的重要作用。 首先&#xff0c;让我们理解什么是三级缓存。Spring中的三…...

Linux信号的保存

Linux系统中信号的保存涉及内核为每个进程维护的数据结构&#xff0c;确保信号在产生后、处理前被正确记录和管理。以下是详细的解释&#xff1a; 1. 信号的基本概念 信号&#xff08;Signal&#xff09;&#xff1a;用于通知进程发生了特定事件的异步通知机制&#xff0c;如…...

leetcode0215. 数组中的第K个最大元素-medium

1 题目&#xff1a;数组中的第K个最大元素 官方标定难度&#xff1a;中 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时…...

C++(17):引用传参

目录 一、核心概念 二、代码示例&#xff1a;对比指针和引用 1. 指针传参的问题 2. 引用传参的改进 三、引用传参的优势 四、总结 一、核心概念 别名机制&#xff1a;引用是变量的别名&#xff0c;操作引用等同于操作原变量。 避免拷贝&#xff1a;直接操作原始变量&…...

handsome主题美化及优化:10.1.0最新版 - 1

文章目录 前言右侧导航栏主题标题居中页面两侧框架留白间距handsome 原生入站提示评论一键赞、踩、打卡时光机头像圆形logo 扫光赞赏按钮跳动鼠标点击特效复制版权提示彩色标签云及右栏数字自定义右键响应时间和访客总数全站字数统计版权提示时间流逝添加心知天气总结 前言 ha…...

基于React的高德地图api教程006:两点之间距离测量

文章目录 6、距离测量6.1 两点之间距离测量6.1.1 两点距离测量按钮6.1.2 点击地图添加点6.1.3 测量两点之间距离并画线6.2 测量过程显示两点之间预览线6.3 绘制完毕6.4 显示清除按钮6.5 代码下载6.06、距离测量 6.1 两点之间距离测量 6.1.1 两点距离测量按钮 实现代码: re…...

Java回溯算法解决非递减子序列问题(LeetCode 491)的深度解析

文章目录 问题描述错误代码分析原代码实现错误原因 修正方案与代码实现修正后的代码关键修正点 核心问题&#xff1a;为什么 used 不需要回溯&#xff1f;作用域与生命周期示例分析 总结算法设计要点复杂度分析 问题描述 给定一个整数数组 nums&#xff0c;找出并返回所有不同…...

基于PXIE 总线架构的Kintex UltraScale 系列FPGA 高性能数据预处理板卡

基于PXIE 总线架构的Kintex UltraScale 系列FPGA 高性能数据预处理板卡 一款基于3U PXIE 总线架构的高性能数据预处理FMC 载板&#xff0c;板卡具有1 个FMC&#xff08;HPC&#xff09;接口&#xff0c;1 个X8 GTH 背板互联接口&#xff0c;可以实现1 路PCIe x8。板卡采用Xili…...

[前端] wang 富文本 vue3

官方链接 https://www.npmjs.com/package/wangeditor-next/editor-for-vue <template><div style"border: 1px solid #ccc"><Toolbar style"border-bottom: 1px solid #ccc" :editor"editorRef" :defaultConfig"toolbarCo…...

【Python 操作 MySQL 数据库】

在 Python 中操作 MySQL 数据库主要通过 pymysql 或 mysql-connector-python 库实现。以下是完整的技术指南&#xff0c;包含连接管理、CRUD 操作和最佳实践&#xff1a; 一、环境准备 1. 安装驱动库 pip install pymysql # 推荐&#xff08;纯Python实现&#xff0…...