Python 连接数据库实现 CRUD(MySQL)

devtools/2024/9/23 14:24:36/

本指南将演示如何使用 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()

代码解释:

  1. 导入库: 导入 mysql.connector 库。

  2. 设置连接信息: 创建一个字典 config,包含数据库连接信息,如用户名、密码、主机地址和数据库名称。

  3. 连接数据库: 使用 mysql.connector.connect(**config) 连接数据库

  4. 创建游标对象: 使用 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, "计算机科学")

代码解释:

  1. 定义函数 create_student: 该函数接收学生姓名、年龄和专业作为参数,用于创建学生记录。

  2. 构建 SQL 语句: 使用参数化查询构建 SQL INSERT 语句,防止 SQL 注入攻击。

  3. 执行 SQL 语句: 使用 cursor.execute(sql, values) 执行 SQL 语句,并将学生信息作为参数传递。

  4. 提交更改: 使用 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()

代码解释:

  1. 定义函数 get_all_students: 该函数用于获取所有学生记录。

  2. 构建 SQL 语句: 使用 SELECT * 查询所有学生信息。

  3. 执行 SQL 语句: 使用 cursor.execute(sql) 执行 SQL 语句。

  4. 获取结果: 使用 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

代码解释:

  1. 定义函数 update_student_age: 该函数接收学生 ID 和新的年龄作为参数,用于更新学生年龄。

  2. 构建 SQL 语句: 使用参数化查询构建 SQL UPDATE 语句。

  3. 执行 SQL 语句: 使用 cursor.execute(sql, values) 执行 SQL 语句,并传递学生 ID 和新的年龄作为参数。

  4. 提交更改: 使用 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 的学生记录

代码解释:

  1. 定义函数 delete_student: 该函数接收学生 ID 作为参数,用于删除学生记录。

  2. 构建 SQL 语句: 使用参数化查询构建 SQL DELETE 语句。

  3. 执行 SQL 语句: 使用 cursor.execute(sql, values) 执行 SQL 语句,并传递学生 ID 作为参数。

  4. 提交更改: 使用 connection.commit() 将更改提交到数据库

4. 关闭连接

python
复制代码
# 关闭游标和连接
cursor.close()
connection.close()

代码解释: 完成数据库操作后,记得关闭游标对象和数据库连接,释放资源。

希望本指南能够帮助你理解如何使用 Python 连接 MySQL 数据库并执行 CRUD 操作!

如果对你有帮助,记得点赞分享支持一下~


http://www.ppmy.cn/devtools/97821.html

相关文章

如何使用 Jupyter Notebook

Jupyter Notebook 是数据科学、机器学习、学术研究和开发领域中常用的交互式工具。它允许你在浏览器中创建和共享包含代码、文本、可视化和公式的文档。下面我们将从安装、启动、基本操作和高级用法等方面,详细介绍如何使用 Jupyter Notebook。 我自己用时的效果图…

深入单例模式

1. 饿汉模式 饿坏了,上来就先实例化一个对象,好处是代码简单,坏处是这个对象后面如果一直用不到,就是个浪费。 public class A{ private static A a new A(); private A(){} public static A getInstance(){ return a; } } 2. 懒…

Java面试题———MySql篇③

目录 1.查询语句执行流程 2.索引的数据结构是什么 3.数据库中的锁有哪些 4.MySQL日志类型 5.MySQL主从复制的流程 6.谈谈你对sql的优化的经验 1.查询语句执行流程 一条查询语句到达MySQL数据库之后,数据库中的各个组件会按照顺序执行自己的任务 首先是连接器…

取证工具 ElcomSoft iOS Forensics Toolkit: 在 Windows 中加载 HFS 镜像

天津鸿萌科贸发展有限公司是 ElcomSoft 系列取证软件的授权代理商。 Elcomsoft iOS Forensics Toolkit 功能简介 Elcomsoft iOS Forensics Toolkit 软件工具包适用于取证工作,对 iPhone、iPad 和 iPod Touch 设备执行完整文件系统和逻辑数据采集。对设备文件系统制…

8个我平时每天都会看的网站,涵盖办公、娱乐、学习等

分享8个我平时每天都会看的网站,涵盖办公、娱乐、学习等多种类别,试过就知道有多好用! 1、MyFreeMP3 tools.liumingye.cn/music/#/ 一个可以免费听歌的平台,不用充会员,里面收录了大多数的国内外知名流行歌手、乐队的…

vue3 响应式 API:watch()、watchEffect()

watch() 基本概念 watch()用于监视响应式数据的变化,并在数据变化时执行相应的回调函数。可以监视单个响应式数据、多个响应式数据的组合,或者一个计算属性。 返回值 返回一个函数,调用这个函数可以停止监视。 特点 watch() 默认是懒侦听的&…

Ansible可视化管理之web界面集成使用探究(未完待续)

一、前言 因某集成商管理的客户资源涉及4A接入管控要求,其中密码必须3个月更新一次,随着纳管主机的数量增多,手动去修改密码变得不现实,考虑无侵入性和资源耗用,便捷性等因素,首先选用Ansible作为此需求的…

硬件工程师必须掌握的MOS管详细知识

MOS管,全称为金属-氧化物半导体场效应晶体管(Metal-Oxide-Semiconductor Field-Effect Transistor,MOSFET),是一种重要的半导体器件,广泛应用于电子工业中各种电路的开关、放大、调制、数字电路和模拟电路等…