删除数据 (DELETE)

🎉摘要:本文提供Python中使用MySQL连接器进行数据删除操作的完整代码示例,包括单条记录删除和基于条件的批量删除。通过Database类封装数据库连接,使用上下文管理器管理资源,并演示了delete_student和delete_students_below_age函数的实现与应用。

删除数据 (DELETE)完整代码如下:

from contextlib import contextmanager
import mysql.connector
from mysql.connector import Error

class DatabaseConfig:
    """数据库配置类,集中管理连接参数"""
    HOST = '192.168.116.70'             # 数据库服务器地址
    PORT = 3306                         # 数据库端口号
    DATABASE = 'python_mysql_demo'      # 数据库名
    USER = 'root'                       # 数据库用户名
    PASSWORD = 'aaaaaa'                 # 数据库密码
    CHARSET = 'utf8mb4'                 # 字符集,该字符集可支持emoji表情


class Database:
    """数据库操作封装"""

    def __init__(self, config=DatabaseConfig):
        self.config = config
        self.connection = None

    def connect(self):
        """建立连接"""
        self.connection = mysql.connector.connect(
            host=self.config.HOST,
            port=self.config.PORT,
            database=self.config.DATABASE,
            user=self.config.USER,
            password=self.config.PASSWORD,
            charset=self.config.CHARSET,
            autocommit=False
        )
        return self.connection

    def close(self):
        """关闭连接"""
        if self.connection and self.connection.is_connected():
            self.connection.close()

    def __enter__(self):
        """
        进入上下文管理器,建立数据库连接
        在 with 语句入口处被调用,建立连接并返回实例本身
        """
        self.connect()
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        """
        退出上下文管理器,关闭数据库连接
        """
        self.close()


def delete_student(db, student_id):
    """删除指定学生"""
    sql = "DELETE FROM students WHERE id = %s"
    cursor = db.connection.cursor()
    cursor.execute(sql, (student_id,))
    db.connection.commit()
    return cursor.rowcount

def delete_students_below_age(db, age):
    """批量删除 —— 条件删除"""
    sql = "DELETE FROM students WHERE age < %s"
    cursor = db.connection.cursor()
    cursor.execute(sql, (age,))
    db.connection.commit()
    return cursor.rowcount

if __name__ == "__main__":
    # 使用上下文管理器操作数据库
    with Database() as db:
        try:
            # 删除指定学生
            student_id = 23
            deleted_count = delete_student(db, student_id)
            print(f"删除ID为 {student_id} 的学生 {deleted_count} 个")

            # 批量删除年龄小于指定值的学生
            age_threshold = 18
            deleted_count = delete_students_below_age(db, age_threshold)
            print(f"删除了 {deleted_count} 个年龄小于 {age_threshold} 的学生")

        except Error as e:
            print(f"Error: {e}")

 

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号