本指南将演示如何使用 Python 连接 MySQL 数据库,并实现 CRUD(创建、读取、更新、删除)操作。
1. 准备工作
1.1 安装 MySQL 连接器
使用 pip 安装 mysql-connector-python 库:
pip install mysql-connector-python
1.2 准备数据库和表
确保你有一个可用的 MySQL 数据库,并创建一个用于演示的表。例如,创建一个名为 students 的表,包含以下字段:
-
id: INT, 主键,自增
-
name: VARCHAR(255), 姓名
-
age: INT, 年龄
-
major: VARCHAR(255), 专业
你可以使用以下 SQL 语句创建该表:
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
age INT,
major VARCHAR(255)
);
2. 连接数据库
import mysql.connector
# 数据库连接信息
config = {
'user': 'your_username', # 替换为你的数据库用户名
'password': 'your_password', # 替换为你的数据库密码
'host': 'localhost', # 替换为你的数据库主机地址
'database': 'your_database' # 替换为你的数据库名称
}
# 连接数据库
connection = mysql.connector.connect(**config)
# 创建游标对象
cursor = connection.cursor()
代码解释:
-
导入库: 导入 mysql.connector 库。
-
设置连接信息: 创建一个字典 config,包含数据库连接信息,如用户名、密码、主机地址和数据库名称。
-
连接数据库: 使用 mysql.connector.connect(**config) 连接数据库。
-
创建游标对象: 使用 connection.cursor() 创建一个游标对象,用于执行 SQL 语句。
3. 实现 CRUD 操作
3.1 创建 (Create)
def create_student(name, age, major):
"""创建学生记录。
Args:
name: 学生姓名。
age: 学生年龄。
major: 学生专业。
"""
sql = "INSERT INTO students (name, age, major) VALUES (%s, %s, %s)"
values = (name, age, major)
cursor.execute(sql, values)
connection.commit() # 提交更改到数据库
print(f"学生记录 '{name}' 已创建。")
# 示例用法
create_student("张三", 20, "计算机科学")
代码解释:
-
定义函数 create_student: 该函数接收学生姓名、年龄和专业作为参数,用于创建学生记录。
-
构建 SQL 语句: 使用参数化查询构建 SQL INSERT 语句,防止 SQL 注入攻击。
-
执行 SQL 语句: 使用 cursor.execute(sql, values) 执行 SQL 语句,并将学生信息作为参数传递。
-
提交更改: 使用 connection.commit() 将更改提交到数据库。
3.2 读取 (Read)
def get_all_students():
"""获取所有学生记录。
"""
sql = "SELECT * FROM students"
cursor.execute(sql)
students = cursor.fetchall() # 获取所有结果
for student in students:
print(student)
# 示例用法
get_all_students()
代码解释:
-
定义函数 get_all_students: 该函数用于获取所有学生记录。
-
构建 SQL 语句: 使用 SELECT * 查询所有学生信息。
-
执行 SQL 语句: 使用 cursor.execute(sql) 执行 SQL 语句。
-
获取结果: 使用 cursor.fetchall() 获取所有查询结果,并遍历打印每个学生信息。
3.3 更新 (Update)
def update_student_age(student_id, new_age):
"""更新学生年龄。
Args:
student_id: 学生 ID。
new_age: 新的年龄。
"""
sql = "UPDATE students SET age = %s WHERE id = %s"
values = (new_age, student_id)
cursor.execute(sql, values)
connection.commit()
print(f"学生 ID 为 {student_id} 的记录已更新。")
# 示例用法
update_student_age(1, 21) # 将 ID 为 1 的学生的年龄更新为 21
代码解释:
-
定义函数 update_student_age: 该函数接收学生 ID 和新的年龄作为参数,用于更新学生年龄。
-
构建 SQL 语句: 使用参数化查询构建 SQL UPDATE 语句。
-
执行 SQL 语句: 使用 cursor.execute(sql, values) 执行 SQL 语句,并传递学生 ID 和新的年龄作为参数。
-
提交更改: 使用 connection.commit() 将更改提交到数据库。
3.4 删除 (Delete)
def delete_student(student_id):
"""删除学生记录。
Args:
student_id: 学生 ID。
"""
sql = "DELETE FROM students WHERE id = %s"
values = (student_id,)
cursor.execute(sql, values)
connection.commit()
print(f"学生 ID 为 {student_id} 的记录已删除。")
# 示例用法
delete_student(1) # 删除 ID 为 1 的学生记录
代码解释:
-
定义函数 delete_student: 该函数接收学生 ID 作为参数,用于删除学生记录。
-
构建 SQL 语句: 使用参数化查询构建 SQL DELETE 语句。
-
执行 SQL 语句: 使用 cursor.execute(sql, values) 执行 SQL 语句,并传递学生 ID 作为参数。
-
提交更改: 使用 connection.commit() 将更改提交到数据库。
4. 关闭连接
python
复制代码
# 关闭游标和连接
cursor.close()
connection.close()
代码解释: 完成数据库操作后,记得关闭游标对象和数据库连接,释放资源。
希望本指南能够帮助你理解如何使用 Python 连接 MySQL 数据库并执行 CRUD 操作!
如果对你有帮助,记得点赞分享支持一下~