Python导出MySQL数据库中表的建表语句到文件
为了做数据对象的版本控制,需要将MySQL数据库中的表结构导出成文件进行版本化管理,试写了一下,可以完整导出数据库中的表结构信息
# -*- coding: utf-8 -*- import os import pymysqlclass DBTool:conn = Nonecursor = Nonedef __init__(self,conn_dict):self.conn = pymysql.connect(host=conn_dict['host'],port=conn_dict['port'],user=conn_dict['user'],passwd=conn_dict['password'],db=conn_dict['db'],charset=conn_dict['charset'])self.cursor = self.conn.cursor()def execute_query(self, sql_string):try:cursor=self.cursorcursor.execute(sql_string)list = cursor.fetchall()cursor.close()self.conn.close()return listexcept pymysql.Error as e:print("mysql execute error:", e)raisedef execute_noquery(self, sql_string):try:cursor = self.cursorcursor.execute(sql_string)self.conn.commit()self.cursor.close()self.conn.close()except pymysql.Error as e:print("mysql execute error:", e)raisedef main():conn_dict = {'host': '127.0.0.1', 'port': 3306, 'user': '******', 'password': '******', 'db': 'test', 'charset': 'utf8'}conn = DBTool(conn_dict)sql_gettables = "select table_name from information_schema.`TABLES` WHERE TABLE_SCHEMA = 'databas_name';"list = conn.execute_query(sql_gettables)# 文件目标路径,如果不存在,新建一个mysql_file_path = 'D:\mysqlscript'if not os.path.exists(mysql_file_path):os.mkdir(mysql_file_path)mysqldump_commad_dict = {'dumpcommad': 'mysqldump --no-data ', 'server': '127.0.0.1', 'user': '******','password': '******', 'port': 3306, 'db': 'databse_name'}if list:for row in list:print(row[0])# 切换到新建的文件夹中 os.chdir(mysql_file_path)#表名dbtable = row[0]#文件名exportfile = row[0] + '.sql'# mysqldump 命令sqlfromat = "%s -h%s -u%s -p%s -P%s %s %s >%s"# 生成相应的sql语句sql = (sqlfromat % (mysqldump_commad_dict['dumpcommad'],mysqldump_commad_dict['server'],mysqldump_commad_dict['user'],mysqldump_commad_dict['password'],mysqldump_commad_dict['port'],mysqldump_commad_dict['db'],dbtable,exportfile))print(sql)result = os.system(sql)if result:print('export ok')else:print('export fail')if __name__ == '__main__':main()
建库测试
create database test_database charset 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.
导出建表语句会根据表的数据情况编号自增列,这是mysqldump的问题而不是导出的问题,如果有必要可以需求做相应的修改
去掉mysqldump导出表结构中备注信息
import osfilepath = "D:\\mysqlscript" # 切换到新建的文件夹中 os.chdir(filepath) pathDir = os.listdir(filepath) for file in pathDir:lines = open(file, "r")content = "use ***;"content = content + "\n"for line in lines:print(line)if not (str(line).startswith("--") or str(line).startswith("/*") ):if(line!="\n" and str(line).startswith(") ENGINE")):content = content +"\n"+ ")"else:content = content + line#将提炼后的内容重新写入文件print(content)fp = open(file, 'w')fp.write(content)fp.close()
转载于:https://www.cnblogs.com/wy123/p/7903275.html
Python导出MySQL数据库中表的建表语句到文件相关推荐
- postgres 命令行建数据库表_Postgresql 查看建表语句 命令
Mysql查看建表语句以及修改引擎 更多内容推荐微信公众号,欢迎关注: 1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎 两种方法: a.show table stat ...
- mysql分片建表语句_Mysql元数据如何生成Hive建表语句注释脚本详解
前言 本文主要给大家介绍了关于Mysql元数据生成Hive建表语句注释脚本的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 最近在将数据从Mysql 等其他关系型数据库 抽取 ...
- mysql hive 建表语句_Mysql元数据如何生成Hive建表语句注释脚本详解
前言 本文主要给大家介绍了关于Mysql元数据生成Hive建表语句注释脚本的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 最近在将数据从Mysql 等其他关系型数据库 抽取 ...
- PowerDesigner,如何将Oracle数据库建表语句转化成Mysql数据库建表语句。
在实际工作中,一张表,我们可能需要在Mysql数据库中建表,又要在Oracle数据库中建表.表中每个字段的数据类型.中文注释.是否可为NULL 问题,非常影响我们建表的效率.本篇文章,以Oracle数 ...
- PowerDesigner,如何将Mysql数据库建表语句转化成Oracle数据库建表语句。
在实际工作中,一张表,我们可能需要在Mysql数据库中建表,又要在Oracle数据库中建表.表中每个字段的数据类型.中文注释.是否可为NULL 问题,非常影响我们建表的效率.本篇文章,以Mysql数据 ...
- Python自动生成MySQL建表语句脚本
1.pycharm工具创建一个python文件 2.把下边python代码复制 到 刚创建的python文件中 # 作者:张航铭 # 时间:2022-05-24import xlrd, os def ...
- python脚本-通过数据库建表语句生成表格
python脚本-通过数据库建表语句生成表格 文章目录 python脚本-通过数据库建表语句生成表格 获取数据库建表sql ,需要带备注COMMENT 把sql复制进txt文档,编写python脚本 ...
- 数据库mysql自建模拟购物系统(建表语句、检索语句)
题目:购物系统数据库设计 一.场景描述 随着互联网的普及,越来越多的人选择网上购物.购物系统已经成为了必然趋势,购物系统的主要资源是商品.商品由用户从网上查看价格.品质.评论等选择商品,用户下单付款后 ...
- java生成mysql数据库建表语句、字段、字段类型、字段注释,可实现不用mysqldump备份数据库
使用 mysqldump 备份数据库也是可行的,因为每次备份的时候都需要mysqldump这个文件, 我在windows备份时没问题,但是放到linux上面时,centos系统死活不认这个文件,但又不 ...
最新文章
- android 拖动的view,Android实现随意拖动View效果
- maven的启动类和MAVEN_OPTS参数
- kmemleak的使用---内存泄露检测工具【转】
- HttpClient基础教程
- 超图桌面版打开外部矢量文件
- 使用Code First Migrations依据代码更新数据库结构
- 近期知识图谱顶会论文推荐,另附超详笔记解读
- SAP CRM and C4C PDF print
- loop 伪设备 挂在文件系统
- CCF大专委2019年大数据发展趋势预测
- html显示pcd,PCD5043 Datasheet(数据表) 10 Page - NXP Semiconductors
- HDU 2955 Robberies(概率DP,01背包)题解
- 全网首发:WINDOWS主机与MAC虚拟机文件访问的解决办法
- Oracle数据库学习笔记(四)--Oracle体系结构
- C语言实现一个简单的矩阵运算器
- 游戏服务器更新文件,如何配置网吧游戏更新服务器
- linux戒游戏下载,苍月之戒手游下载-苍月之戒公测版v1.0-Linux公社
- 循序渐进学Java day1
- 17、Java基础---接口
- [kotlin]人工智能对话程序
热门文章
- python实习内容过程_「Python实践」学习之路
- php 网路io是什么意思,io接口位于什么和什么之间
- javapythonc就业人数比例_P100 统计各年龄段的人数
- 如何查看oracle死鎖,怎么查看oracle是否有死鎖
- java中的saturn_Saturn分布式调度平台系列:高屋建瓴之设计原理简析
- 用python写聊天机器人_用Python 写一个机器人陪你聊天(文尾有彩蛋)
- ggplot2作图详解:主题(theme)设置
- android 通过usb验证应用,Linux应用可通过USB访问Android设备-Chrome OS 75版发布
- 三百行python代码的项目_300行Python代码打造实用接口测试框架
- C语言:有N个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课程的成绩),计算出平均成绩,将原有数据和计算出的平均成绩存放在磁盘文件stu_list.txt中。