Python 操作 MySQL 数据库 通常使用 MySQL ConnectorPyMySQL 等第三方库,通过它们可以轻松地连接、查询、更新和删除数据库中的数据。以下是使用 MySQL ConnectorPyMySQL 操作 MySQL 数据库的基本教程。


1. 安装依赖库

1.1 安装 MySQL Connector

pip install mysql-connector-python

1.2 安装 PyMySQL

pip install pymysql


2. 连接到 MySQL 数据库

2.1 使用 MySQL Connector 连接 MySQL 数据库

import mysql.connector

# 连接到 MySQL 数据库
db = mysql.connector.connect(
    host="localhost",        # 主机地址
    user="root",             # 用户名
    password="password",     # 密码
    database="test_db"       # 数据库名称
)

# 创建一个游标对象
cursor = db.cursor()

# 执行查询
cursor.execute("SELECT DATABASE()")
result = cursor.fetchone()

print(f"当前数据库:{result[0]}")

# 关闭连接
cursor.close()
db.close()

2.2 使用 PyMySQL 连接 MySQL 数据库

import pymysql

# 连接到 MySQL 数据库
db = pymysql.connect(
    host="localhost",        # 主机地址
    user="root",             # 用户名
    password="password",     # 密码
    database="test_db"       # 数据库名称
)

# 创建一个游标对象
cursor = db.cursor()

# 执行查询
cursor.execute("SELECT DATABASE()")
result = cursor.fetchone()

print(f"当前数据库:{result[0]}")

# 关闭连接
cursor.close()
db.close()


3. 执行 SQL 查询

3.1 执行 SELECT 查询

import mysql.connector

db = mysql.connector.connect(
    host="localhost",
    user="root",
    password="password",
    database="test_db"
)

cursor = db.cursor()

# 执行 SELECT 查询
cursor.execute("SELECT * FROM employees")

# 获取所有结果
results = cursor.fetchall()

# 输出每一行
for row in results:
    print(row)

cursor.close()
db.close()

3.2 执行 INSERT、UPDATE 和 DELETE 查询

INSERT 示例

import mysql.connector

db = mysql.connector.connect(
    host="localhost",
    user="root",
    password="password",
    database="test_db"
)

cursor = db.cursor()

# 执行 INSERT 语句
insert_query = "INSERT INTO employees (name, age, department) VALUES (%s, %s, %s)"
values = ("John Doe", 30, "HR")
cursor.execute(insert_query, values)

# 提交更改
db.commit()

print(f"插入 {cursor.rowcount} 条记录")

cursor.close()
db.close()

UPDATE 示例

import mysql.connector

db = mysql.connector.connect(
    host="localhost",
    user="root",
    password="password",
    database="test_db"
)

cursor = db.cursor()

# 执行 UPDATE 语句
update_query = "UPDATE employees SET age = %s WHERE name = %s"
values = (31, "John Doe")
cursor.execute(update_query, values)

# 提交更改
db.commit()

print(f"更新 {cursor.rowcount} 条记录")

cursor.close()
db.close()

DELETE 示例

import mysql.connector

db = mysql.connector.connect(
    host="localhost",
    user="root",
    password="password",
    database="test_db"
)

cursor = db.cursor()

# 执行 DELETE 语句
delete_query = "DELETE FROM employees WHERE name = %s"
values = ("John Doe",)
cursor.execute(delete_query, values)

# 提交更改
db.commit()

print(f"删除 {cursor.rowcount} 条记录")

cursor.close()
db.close()


4. 使用事务

4.1 执行事务操作

import mysql.connector

db = mysql.connector.connect(
    host="localhost",
    user="root",
    password="password",
    database="test_db"
)

cursor = db.cursor()

try:
    # 开始事务
    cursor.execute("START TRANSACTION")

    # 执行一系列查询
    cursor.execute("INSERT INTO employees (name, age, department) VALUES (%s, %s, %s)", ("Alice", 28, "IT"))
    cursor.execute("INSERT INTO employees (name, age, department) VALUES (%s, %s, %s)", ("Bob", 25, "Finance"))

    # 提交事务
    db.commit()
    print("事务提交成功")
except mysql.connector.Error as err:
    db.rollback()  # 回滚事务
    print(f"错误: {err}")

cursor.close()
db.close()


5. 使用参数化查询

5.1 防止 SQL 注入

使用参数化查询可以有效防止 SQL 注入攻击:

import mysql.connector

db = mysql.connector.connect(
    host="localhost",
    user="root",
    password="password",
    database="test_db"
)

cursor = db.cursor()

# 使用占位符进行参数化查询
query = "SELECT * FROM employees WHERE name = %s"
cursor.execute(query, ("John Doe",))

# 获取结果
result = cursor.fetchall()
for row in result:
    print(row)

cursor.close()
db.close()


6. 处理异常

在数据库操作中,使用 try...except 来捕获并处理异常:

import mysql.connector

try:
    db = mysql.connector.connect(
        host="localhost",
        user="root",
        password="wrong_password",  # 错误的密码
        database="test_db"
    )
    cursor = db.cursor()
    cursor.execute("SELECT * FROM employees")
except mysql.connector.Error as err:
    print(f"数据库错误: {err}")
finally:
    if db.is_connected():
        cursor.close()
        db.close()


7. 参考资料

出站链接

站内链接

通过 MySQL 操作,您可以高效管理数据库中的数据,实现应用与数据库的无缝连接!🚀