Python连接MySQL数据库完全指南

news/2025/2/22 19:50:07

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.niftyadmin.cn/n/5862703.html

相关文章

【算法】002、编程实现社会问题

【算法】002、编程实现社会问题 文章目录 一、模拟1.1 模拟 二、多语言解法 // 一开始有100个人,每个人都有100元 // 在每一轮都做如下的事情 : // 每个人都必须拿出1元钱给除自己以外的其他人,给谁完全随机 // 如果某个人在这一轮的钱数为0&#xff0c…

【护网行动-红蓝攻防】第一章-红蓝对抗基础 认识红蓝紫

1.实战攻防演练 1.1为什么要进行实战攻防演练? 军事上的演练,是除了实战以外最能检验军队战斗力的一种考核方式,他可以模拟面对外部势力的攻击时候,如何更好的去维护国家和主权的安全。同样的,在网络上面,…

黑客疑入侵OmniGPT:3400万用户数据遭泄露

一名黑客声称已成功入侵 OmniGPT——一个由人工智能驱动的知名聊天机器人和生产力平台。此次事件导致3万名用户的电子邮件、电话号码以及超过 3400 万条(34270455)用户对话被泄露。这些数据由一位化名为“Gloomer”的黑客于2月9日上午在 Breach Forums 上…

Promptic:Python 中的 LLM 应用开发利器

Promptic 是一个基于 Python 的轻量级库,旨在简化与大型语言模型(LLMs)的交互。它通过提供简洁的装饰器 API 和强大的功能,帮助开发者高效地构建 LLM 应用程序。Promptic 的设计理念是提供 90% 的 LLM 应用开发所需功能,同时保持代码的简洁和易用性。 1. Promptic 的核心…

鸿蒙开发环境搭建-入门篇

本文章讲述如何搭建鸿蒙应用开发环境:新建工程、虚拟机运行、真机调试等。 开发工具: DevEco Studio 5.0.3.906 os系统: mac 参考文档:https://juejin.cn/post/7356143704699699227 官网鸿蒙应用开发学习文档:https://developer.huawei.com/c…

这个TensorFlow是一个开源的机器学习框架,怎么用

使用TensorFlow进行机器学习可以分为以下几个步骤: 安装TensorFlow:首先需要在你的机器上安装TensorFlow。可以通过pip命令来安装TensorFlow:pip install tensorflow。 准备数据:准备用于训练和测试的数据集。TensorFlow支持多种…

鸿蒙-状态管理V1

目录 前言状态管理V1State装饰器初始化观察能力小坑 Prop装饰器 和 Link装饰器Observed装饰器和ObjectLink装饰器使用示例小结 前言 随着鸿蒙Next的推广,做鸿蒙开发的人是越来越多,提问和寻求帮助的人也是越来越多,就我自己回答的问题而言&a…

排序与算法:插入排序

执行效果 插入排序的执行效果是这样的: 呃……看不懂吗?没关系,接着往下看介绍 算法介绍 插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据&#xff0c…