使用Python实现批量删除MYSQL数据库的全部外键

我先说下场景,昨天因为我们使用了Java工作流框架flowable,它自动生成了许多工作流相关的表,但是这些表都有外键关联,如果单纯的使用sql语句去一个一个的删除外键,那会非常麻烦,所以我写了一个Python脚本来进行批量删除。

前提是你要有个Python环境...

先安装mysql驱动依赖:

bash 复制代码
pip install mysql-connector-python

因为代码非常简单,所以直接把代码粘出来,改下你mysql的连接信息,直接右键运行即可。

python 复制代码
import mysql.connector

def delete_foreign_keys(host, port, user, password, database):
    try:
        # 连接到数据库
        conn = mysql.connector.connect(
            host=host,
            port=port,
            user=user,
            password=password,
            database=database
        )

        cursor = conn.cursor()

        # 查询外键约束
        cursor.execute("""
            SELECT 
                CONSTRAINT_NAME,
                TABLE_NAME
            FROM
                INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
            WHERE
                UNIQUE_CONSTRAINT_SCHEMA = %s;
        """, (database,))

        foreign_keys = cursor.fetchall()

        # 生成删除外键约束的 SQL 语句并执行
        for fk in foreign_keys:
            constraint_name, table_name = fk
            cursor.execute(f"ALTER TABLE {table_name} DROP FOREIGN KEY {constraint_name};")
            print(f"Deleted foreign key constraint {constraint_name} from table {table_name}")

        conn.commit()
        print("All foreign key constraints deleted successfully!")

    except mysql.connector.Error as error:
        print("Error while connecting to MySQL", error)

    finally:
        if conn.is_connected():
            cursor.close()
            conn.close()
            print("MySQL connection is closed")

# 设置数据库连接参数
host = '127.0.0.1'
port = 3306  # MySQL 默认端口号
user = 'root'
password = 'root'
database = 'mydatabase'

# 调用函数删除外键约束
delete_foreign_keys(host, port, user, password, database)
相关推荐
西洼工作室2 分钟前
B站登录流程全解析:RSA+极验验证
前端·python·极验
zhaoyong2222 分钟前
如何在 MySQL 中实现基于全字段唯一性的重复行计数更新
jvm·数据库·python
X56614 分钟前
为什么宝塔面板网站无法正常连接外部远程数据库_检查服务器安全组放行端口并开启IP授权
jvm·数据库·python
woxihuan1234568 分钟前
C#怎么使用CancellationToken C#如何用取消令牌优雅地取消异步任务和长时间操作【进阶】
jvm·数据库·python
测试员周周15 分钟前
【AI测试功能5】AI功能测试的“黄金数据集“构建指南:从0到1搭建质量评估体系
运维·服务器·开发语言·人工智能·python·功能测试·集成测试
yexuhgu18 分钟前
MySQL主从复制支持跨版本吗_不同版本间同步的注意事项
jvm·数据库·python
好运的阿财21 分钟前
7天没有打开OpenClaw了
python·机器学习·ai·ai编程·openclaw
woxihuan12345624 分钟前
CSS怎样调整弹性项目排列顺序_使用order属性轻松控制DOM显示顺序
jvm·数据库·python
卡次卡次125 分钟前
14.2:详细补充:子进程会复制什么
前端·python·php
谙弆悕博士25 分钟前
【附Python源码】基于决策树的信用卡欺诈检测实战
python·学习·算法·决策树·机器学习·数据分析·scikit-learn