将表结构信息导出到Excel文档
先看效果图预览下
- 目录页
- 详情页
然后,上代码!!!
import xlwt
import pymysql
import sys
reload(sys)
sys.setdefaultencoding('utf8')
"""
可配置参数
"""
db_host = '127.0.0.1'
db_user = 'root'
db_passwd = '123456'
db_port = 3306
export_db_scheme = 'mysql_database'
show_index_flag = True
existCommentFlag = True
sheetNameEqualToTableNameFlag = False
"""
----------------------------
"""
db_scheme = 'information_schema'
print("连接数据库中...")
db=pymysql.connect(host=db_host,user=db_user,passwd=db_passwd,db=db_scheme,port=db_port,charset='utf8mb4')
print("连接成功")
cur = db.cursor()
select_sql = "SELECT col.TABLE_NAME, tab.TABLE_COMMENT, col.COLUMN_NAME, col.COLUMN_TYPE, col.IS_NULLABLE, col.COLUMN_DEFAULT, col.COLUMN_COMMENT, col.COLUMN_KEY, col.EXTRA"
from_sql = " FROM COLUMNS col,TABLES tab"
where_sql = " WHERE col.TABLE_SCHEMA= '"+export_db_scheme+"' AND tab.TABLE_NAME = col.TABLE_NAME AND tab.TABLE_SCHEMA = col.TABLE_SCHEMA"
order_sql = " ORDER BY TABLE_NAME"
sql = select_sql + from_sql + where_sql + order_sql
tableStructureData = [];
sheetSet = set();
try:
cur.execute(sql)
results = cur.fetchall()
table_name = "";
for row in results :
if existCommentFlag and row[1] == '' :
continue
if row[0] != table_name and row[0] != '' :
table_name = row[0]
table = {
}
table["table_name"] = table_name
if sheetNameEqualToTableNameFlag:
table["table_comment"] = row[0]
else:
if row[1] == "" :
table["table_comment"] = row[0]
else:
table["table_comment"] = row[1]
if len(table["table_comment"])>30:
table["table_comment"]=table["table_comment"][0:30]
if(table["table_comment"] not in sheetSet):
sheetSet.add(table["table_comment"])
tableStructureData.append(table)
table["column"] = []
else:
pass
colMap = {