计算机网络/计算机科学与应用/系统/运维/开发

Python 操作MySQL数据库

一、安装驱动

pip install mysql-connector-python



二、配置数据库

# 数据库连接信息(改成你自己的)

DB_CONFIG = {
    "host": "localhost",       # 本地一般是 localhost
    "user": "root",            # 你的 MySQL 用户名
    "password": "123456",      # 你的 MySQL 密码
    "database": "test_db",     # 要连接的数据库名
    "charset": "utf8mb4"       # 支持中文、表情
}


三、测试连接MySQL

import mysql.connector
from mysql.connector import Error

# 连接数据库
def connect_db():
    try:
        conn = mysql.connector.connect(**DB_CONFIG)
        if conn.is_connected():
            print("✅ 连接 MySQL 成功!")
            return conn
    except Error as e:
        print(f"❌ 连接失败:{e}")
        return None

# 测试
conn = connect_db()
if conn:
    conn.close()


四、查询所有/单条数据库

def query_all(sql, params=None):
    conn = connect_db()
    if not conn:
        return []
    cursor = conn.cursor(dictionary=True)  # 返回字典格式
    try:
        cursor.execute(sql, params)
        return cursor.fetchall()  # 获取所有数据
    except Error as e:
        print(f"查询失败:{e}")
        return []
    finally:
        cursor.close()
        conn.close()

# 使用示例
data = query_all("SELECT * FROM user")
for row in data:
    print(row)  # 每一行是字典,可直接 row["name"], row["age"]


五、新增数据库

def insert(sql, params):
    conn = connect_db()
    if not conn:
        return False
    cursor = conn.cursor()
    try:
        cursor.execute(sql, params)
        conn.commit()  # 必须提交!
        print(f"✅ 新增成功,影响行数:{cursor.rowcount}")
        return True
    except Error as e:
        conn.rollback()  # 失败回滚
        print(f"❌ 新增失败:{e}")
        return False
    finally:
        cursor.close()
        conn.close()

# 使用示例
insert(
    "INSERT INTO user(name, age) VALUES(%s, %s)",
    ("张三", 20)
)


六、修改数据

def update(sql, params):
    conn = connect_db()
    if not conn:
        return False
    cursor = conn.cursor()
    try:
        cursor.execute(sql, params)
        conn.commit()
        print(f"✅ 修改成功,影响行数:{cursor.rowcount}")
        return True
    except Error as e:
        conn.rollback()
        print(f"❌ 修改失败:{e}")
        return False
    finally:
        cursor.close()
        conn.close()

# 使用示例
update(
    "UPDATE user SET age=%s WHERE name=%s",
    (21, "张三")
)


七、删除数据

def delete(sql, params):
    conn = connect_db()
    if not conn:
        return False
    cursor = conn.cursor()
    try:
        cursor.execute(sql, params)
        conn.commit()
        print(f"✅ 删除成功,影响行数:{cursor.rowcount}")
        return True
    except Error as e:
        conn.rollback()
        print(f"❌ 删除失败:{e}")
        return False
    finally:
        cursor.close()
        conn.close()

# 使用示例
delete(
    "DELETE FROM user WHERE name=%s",
    ("张三",)
)


人生于世,就得有点兴致,闲暇之时,或乐游山水、或尽享食味、或寄情岁时,它让我们的生活变得充盈。

评论

^