Python连接MySQL数据库完全指南

devtools/2025/2/22 13:45:27/

Python连接MySQL数据库完全指南

一、环境准备四部曲

1. 安装MySQL服务器(Docker极简版)

docker run --name mysql2025 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:8.4 

2. 安装Python连接驱动

python"># 官方推荐量子加密版 
pip install mysql-connector-python==8.3.0 
# 经典兼容版(适合老系统)
pip install pymysql 

3. 创建测试数据库


CREATE DATABASE school_db;
USE school_db;CREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),age INT,major VARCHAR(50)
);

二、连接数据库六步法

python">import mysql.connector 
from mysql.connector import Error def create_connection():try:conn = mysql.connector.connect(host='localhost',user='root',password='123456',database='school_db',auth_plugin='caching_sha2_password'  # MySQL 8.0+必填 )print("✅ 连接成功!服务器版本:", conn.get_server_info())return conn except Error as e:print(f"❌ 连接失败: {e}")return None 
# 测试连接 
connection = create_connection()

⚠️ 常见问题排查:

若报错Authentication plugin ‘caching_sha2_password’ → 改用mysql_native_password认证
连接超时可添加参数:connect_timeout=30

三、数据操作全流程(CRUD)

1. 数据插入(Create)

python">def insert_student(name, age, major):cursor = connection.cursor()sql = "INSERT INTO students (name, age, major) VALUES (%s, %s, %s)"val = (name, age, major)try:cursor.execute(sql, val)connection.commit()print(f"🆕 插入成功,ID: {cursor.lastrowid}")except Error as e:print(f"插入失败: {e}")insert_student("张伟", 20, "人工智能")

2. 数据查询(Read)

python">def query_students():cursor = connection.cursor(dictionary=True)  # 返回字典格式 cursor.execute("SELECT * FROM students")print("📊 学生列表:")for row in cursor.fetchall():print(f"ID:{row['id']} | 姓名:{row['name']} | 专业:{row['major']}")query_students()

3. 数据更新(Update)

python">def update_student(student_id, new_major):cursor = connection.cursor()sql = "UPDATE students SET major = %s WHERE id = %s"cursor.execute(sql, (new_major, student_id))connection.commit()print(f"🔄 受影响行数: {cursor.rowcount}")update_student(1, "量子计算")

4. 数据删除(Delete)

python">def delete_student(student_id):cursor = connection.cursor()cursor.execute("DELETE FROM students WHERE id = %s", (student_id,))connection.commit()print(f"🗑️ 删除成功" if cursor.rowcount else "⚠️ 未找到该学生")delete_student(1)

四、2025安全规范

1. 连接池管理

python">from mysql.connector import pooling dbconfig = {"host":"localhost","user":"root","password":"123456","database":"school_db"
}pool = pooling.MySQLConnectionPool(pool_name="mypool",pool_size=5,**dbconfig 
)# 从连接池获取连接 
connection = pool.get_connection()

2. 参数化查询规范

python"># 危险做法 ❌	
f"SELECT * FROM users WHERE name = '{name}'"	# 安全做法 ✅
"SELECT * FROM users WHERE name = %s", (name,)

http://www.ppmy.cn/devtools/160952.html

相关文章

使用AI创建流程图和图表的 3 种简单方法

你可能已经尝试过使用 LLMs 生成图像,但你有没有想过用它们来创建 流程图和图表?这些可视化工具对于展示流程、工作流和系统架构至关重要。 通常,在在线工具上手动绘制图表可能会耗费大量时间。但你知道吗?你可以使用 LLMs 通过简…

【05】密码学与隐私保护

5-1 零知识证明 零知识证明介绍 零知识证明的概念 设P(Prover)表示掌握某些信息,并希望证实这一事实的实体,V(Verifier)是验证这一事实的实体。 零知识证明是指P试图使V相信某一个论断是正确的,但却不向…

agent和android怎么结合:健康助手,旅游助手,学习助手

agent和android怎么结合:健康助手,旅游助手,学习助手 创新点 智能交互创新:提出全新的agent - Android交互模式,如基于手势、语音、眼动等多模态融合的交互方式。例如让agent能够同时理解用户的语音指令和手势动作,在Android设备上提供更加自然和高效的交互体验,比如在…

docker 安装redis 7.4.2并挂载配置文件以及设置密码

文章目录 docker 安装redis 7.4.2下载 redis如果你喜欢使用最新的版本创建挂载redis 配置文件创建容器 docker 安装redis 7.4.2 截至2025年2月21日,Redis的最新稳定版本是 7.4.2。 下载 redis 如果你想拉取Redis的特定版本(例如最新的稳定版本 7.4.2&a…

基于ffmpeg+openGL ES实现的视频编辑工具-添加滤镜(七)

在我们的视频编辑工具中,综合运用 ffmpeg 和 OpenGL ES 实现对图像和视频添加滤镜的功能。下面将对其核心逻辑以及相关代码进行详细阐释。 一、整体处理流程 当触发图像显示操作时,首要任务是判定图像的类型,即区分是视频还是图片。对于视频,需对其方向角实施调整并生成 …

推荐几款开源免费的 .NET MAUI 组件库

前言 今天大姚给大家推荐 3 款开源且免费的 .NET MAUI 组件库。 .NET MAUI介绍 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。使用 .NET MAUI,可从单个共享代码库开发可在 Android、iOS、macOS 和 …

在VS-qt的程序中,后期增加PCH预编译功能,提高编译速度

由于前期创建qt程序的时候未勾选pch功能,导致没有启动预编译的功能. 这种情况下需要增加pch功能应该怎么做? 在项目中增加2个文件 stdafx.h和stdafx.cpp文件 stdafx.h增加qt常用头文件 #pragma once //windows #include <windows.h>//qt常用 #include <QObject&g…

微信小程序实现拉卡拉支付

功能需求&#xff1a;拉卡拉支付&#xff08;通过跳转拉卡拉平台进行支付&#xff09;&#xff0c;他人支付&#xff08;通过链接进行平台跳转支付&#xff09; 1.支付操作 //支付 const onCanStartPay async (obj) > {uni.showLoading({mask: true})// 支付接口获取需要传…