0

0

Python导出MySQL数据库中表的建表语句到文件

星夢妙者

星夢妙者

发布时间:2025-07-12 09:56:17

|

1038人浏览过

|

来源于php中文网

原创

为了进行数据对象的版本控制,将mysql数据库中的表结构导出成文件进行版本化管理是非常重要的。以下是一个经过伪原创处理的python脚本,用于实现这一功能,同时保留了原来的功能和逻辑。

# -*- coding: utf-8 -*-
import os
import pymysql

class DatabaseManager: connection = None cursor = None

def __init__(self, connection_params):
    self.connection = pymysql.connect(
        host=connection_params['host'],
        port=connection_params['port'],
        user=connection_params['user'],
        passwd=connection_params['password'],
        db=connection_params['db'],
        charset=connection_params['charset']
    )
    self.cursor = self.connection.cursor()

def run_query(self, sql_string):
    try:
        with self.cursor as cursor:
            cursor.execute(sql_string)
            results = cursor.fetchall()
        self.connection.close()
        return results
    except pymysql.Error as error:
        print("MySQL query error:", error)
        raise

def run_non_query(self, sql_string):
    try:
        with self.cursor as cursor:
            cursor.execute(sql_string)
        self.connection.commit()
        self.connection.close()
    except pymysql.Error as error:
        print("MySQL non-query error:", error)
        raise

def main(): connection_params = { 'host': '127.0.0.1', 'port': 3306, 'user': '**', 'password': '**', 'db': 'test', 'charset': 'utf8' } db_manager = DatabaseManager(connection_params) sql_get_tables = "SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'database_name';" tables = db_manager.run_query(sql_get_tables)

# 定义文件目标路径,如果路径不存在,则创建
export_path = 'D:\\mysqlscript'
if not os.path.exists(export_path):
    os.mkdir(export_path)

mysqldump_params = {
    'dump_command': 'mysqldump --no-data ',
    'server': '127.0.0.1',
    'user': '******',
    'password': '******',
    'port': 3306,
    'db': 'database_name'
}

if tables:
    for table in tables:
        print(table[0])
        os.chdir(export_path)
        table_name = table[0]
        export_file = f"{table_name}.sql"
        sql_format = "%s -h%s -u%s -p%s -P%s %s %s youjiankuohaophpcn%s"
        sql_command = sql_format % (
            mysqldump_params['dump_command'],
            mysqldump_params['server'],
            mysqldump_params['user'],
            mysqldump_params['password'],
            mysqldump_params['port'],
            mysqldump_params['db'],
            table_name,
            export_file
        )
        print(sql_command)
        result = os.system(sql_command)
        if result == 0:
            print('导出成功')
        else:
            print('导出失败')

if name == 'main': main()

数据库测试脚本:

CREATE DATABASE test_database CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

USE test_database;

CREATE TABLE table_a ( id INT AUTO_INCREMENT NOT NULL, name VARCHAR(100) UNIQUE, create_date DATETIME, PRIMARY KEY pk_id(id), INDEX idx_create_date(create_date) );

INSERT INTO table_a (name, create_date) VALUES ('aaaaaa', NOW()); INSERT INTO table_a (name, create_date) VALUES ('bbbbbb', NOW());

CREATE TABLE table_b ( id INT AUTO_INCREMENT NOT NULL, name VARCHAR(100) UNIQUE, create_date DATETIME, PRIMARY KEY pk_id(id), INDEX idx_create_date(create_date) );

INSERT INTO table_b (name, create_date) VALUES ('aaaaaa', NOW()); INSERT INTO table_b (name, create_date) VALUES ('bbbbbb', NOW());

执行脚本时可能会出现以下警告,但这不会影响最终结果:

mysqldump: [Warning] Using a password on the command line interface can be insecure.

Python导出MySQL数据库中表的建表语句到文件

立即学习Python免费学习笔记(深入)”;

hkcms双语言响应式科技类通用模板1.0.0
hkcms双语言响应式科技类通用模板1.0.0

hkcms双语言响应式科技类通用模板是使用hkcms开源内容管理系统开发的一套响应式模板。内有新闻列表、新闻详情、单页、产品列表,产品详情页等。1.使用的框架采用HkCms开源内容管理系统v2.2.1版本2. 所需环境Apache/NginxPHP7.2 及以上 + MySQL 5.6 及以上3. 安装教程:1. 打开根目录,导入根目录下的数据库文件2. 站点运行路径填写到public目录下3.

下载

请注意,mysqldump导出的表结构可能会根据表的数据情况对自增列进行编号。这是mysqldump工具本身的问题,如果需要,可以进行相应的修改。

Python导出MySQL数据库中表的建表语句到文件

移除mysqldump导出表结构中的注释信息:

import os

export_path = "D:\mysqlscript" os.chdir(export_path) files = os.listdir(export_path) for file in files: with open(file, "r") as f: content = "USE **;\n" for line in f: if not (line.startswith("--") or line.startswith("/")): if line != "\n" and line.startswith(") ENGINE"): content += "\n" + ")" else: content += line print(content) with open(file, 'w') as f: f.write(content)

通过以上脚本,您可以轻松地将MySQL数据库中的表结构导出到文件中,并进行版本控制管理。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

756

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

636

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

760

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

618

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1264

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

548

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

578

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

708

2023.08.11

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

9

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

CSS教程
CSS教程

共754课时 | 19.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号