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

Python连接MySQL数据库完全指南

Python连接MySQL数据库完全指南

一、环境准备四部曲

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

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

2. 安装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)
);

二、连接数据库六步法

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)

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)

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)

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)

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. 连接池管理

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. 参数化查询规范

# 危险做法 ❌	
f"SELECT * FROM users WHERE name = '{name}'"	

# 安全做法 ✅
"SELECT * FROM users WHERE name = %s", (name,)

相关文章:

  • Vue前端开发-Vant之Layout组件
  • 申请证书和证书攻击
  • buuctf-[极客大挑战 2019]Knife题解
  • Part 3 第十二章 单元测试 Unit Testing
  • 论文笔记-WWWCompanion2024-LLM as Data Augmenters for Cold-Start Item Recommendation
  • NoSQL之redis数据库
  • Linux操作系统4-进程间通信4(共享内存原理,创建,查看,命令)
  • Test the complete case
  • 新一代MPP数据库:StarRocks
  • 智能网络感知,打造极致流畅的鸿蒙原生版中国移动云盘图文体验
  • 设计模式学习笔记
  • 2025年股指期货和股指期权合约交割的通知!
  • MQTT的连接配置以及重连机制和遇到的问题--------求如何修改更加好
  • Flask flash() 消息示例
  • Python大数据可视化:基于Python的王者荣耀战队的数据分析系统设计与实现_flask+hadoop+spider
  • 数据分析和数据挖掘的工作内容
  • ollama 学习笔记
  • 亚马逊企业购大客户业务拓展经理张越:跨境电商已然成为全球零售电商领域中熠熠生辉的强劲增长点
  • 本地安装 Grafana Loki
  • HTTP SSE 实现
  • wordpress 远程/优化公司组织架构
  • 申请个网站要多少钱/青岛网络科技公司排名
  • 怎么做网赌网站/丁香人才网官方网站
  • 网站开发建设合同范本/steam交易链接在哪里
  • 企业网站的功能有哪些/seo 知乎
  • 下载网站源码/行业关键词词库