[關(guān)系型數(shù)據(jù)庫][MySQL]用python快速導(dǎo)出數(shù)據(jù)字典

分享一段用于導(dǎo)出數(shù)據(jù)庫中表和字段定義至Excel文檔的python代碼,此處是針對MySQL的蕊梧,其他數(shù)據(jù)庫同理岭埠,只要少量的改動。

效果

代碼

import pandas as pd
import sqlalchemy as sqla
username='root'
password='1234'
server='localhost:3306'
database='world'
charset='utf8'
engine = sqla.create_engine('mysql+pymysql://{}:{}@{}/{}?charset={}'.format(username,password,server,database,charset))

#從系統(tǒng)表查詢定義
tables=pd.read_sql('''
select TABLE_SCHEMA,TABLE_NAME,CREATE_TIME,TABLE_COMMENT
from information_schema.TABLES 
where TABLE_SCHEMA='%s'
order by TABLE_NAME;
'''%database,engine)

columns=pd.read_sql('''
select TABLE_NAME,COLUMN_NAME,COLUMN_TYPE,COLUMN_KEY,COLUMN_DEFAULT, COLUMN_COMMENT
from information_schema.COLUMNS 
where TABLE_SCHEMA='%s'
order by TABLE_NAME,ORDINAL_POSITION;
'''%database,engine)

#導(dǎo)出數(shù)據(jù)至Excel
file_path='C:\\Users\\hp\\Desktop\\%s.xlsx'%database
writer=pd.ExcelWriter(file_path)
tables.to_excel(writer,'Index',index=False)
for i in range(len(tables)):
    table_name=tables["TABLE_NAME"].iloc[i]
    columns_=columns[columns["TABLE_NAME"]==table_name].iloc[:,1:]
    columns_.to_excel(writer,table_name,index=False)
writer.save()

#調(diào)整格式
from openpyxl import load_workbook
from openpyxl.styles import Font,colors,Border,Side

border = Border(left=Side(style='medium',color='FF000000'),
                right=Side(style='medium',color='FF000000'),
                top=Side(style='medium',color='FF000000'),
                bottom=Side(style='medium',color='FF000000'),
                diagonal=Side(style='medium',color='FF000000'),
                diagonal_direction=0,outline=Side(style='medium',color='FF000000'),
                vertical=Side(style='medium',color='FF000000'),
                horizontal=Side(style='medium',color='FF000000'))
font=Font(underline='single', color=colors.BLUE)

wb = load_workbook(file_path) 
ws = wb.get_sheet_by_name("Index")
#索引頁調(diào)整列寬
ws.column_dimensions["A"].width =30.0
ws.column_dimensions["B"].width =30.0
ws.column_dimensions["C"].width =30.0
ws.column_dimensions["D"].width =40.0
#增加邊框線
for n in range(2,len(tables)+2):
    for m in ['A','B','C','D']:
        ws[m+str(n)].border=border
#處理各表的頁
for i in range(len(tables)):
    #索引頁增加調(diào)轉(zhuǎn)指定表頁的鏈接
    table_name=tables["TABLE_NAME"].iloc[i]
    ws["B"+str(i+2)].hyperlink = "#"+table_name+"!F1"
    ws["B"+str(i+2)].font = font
    ws2=wb.get_sheet_by_name(table_name)
    #指定表頁增加返回索引頁的鏈接
    ws2["F1"]="back"
    ws2["F1"].hyperlink = "#Index!B"+str(i+2)
    ws2["F1"].font=font
    #指定表頁調(diào)整列寬
    ws2.column_dimensions["A"].width =30.0
    ws2.column_dimensions["B"].width =30.0
    ws2.column_dimensions["C"].width =20.0
    ws2.column_dimensions["D"].width =20.0
    ws2.column_dimensions["E"].width =40.0
    #增加邊框線
    columns_=columns[columns["TABLE_NAME"]==tables["TABLE_NAME"].iloc[i]].iloc[:,1:]
    for n in range(2,len(columns_)+2):
        for m in ['A','B','C','D','E']:
            ws2[m+str(n)].border=border
wb.save(file_path)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末世舰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子槽卫,更是在濱河造成了極大的恐慌跟压,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晒夹,死亡現(xiàn)場離奇詭異裆馒,居然都是意外死亡姊氓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門喷好,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翔横,“玉大人,你說我怎么就攤上這事梗搅『萄洌” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵无切,是天一觀的道長荡短。 經(jīng)常有香客問我,道長哆键,這世上最難降的妖魔是什么掘托? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮籍嘹,結(jié)果婚禮上闪盔,老公的妹妹穿的比我還像新娘。我一直安慰自己辱士,他們只是感情好泪掀,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著颂碘,像睡著了一般异赫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上头岔,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天塔拳,我揣著相機與錄音,去河邊找鬼切油。 笑死蝙斜,一個胖子當(dāng)著我的面吹牛名惩,可吹牛的內(nèi)容都是我干的澎胡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼娩鹉,長吁一口氣:“原來是場噩夢啊……” “哼攻谁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起弯予,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤戚宦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后锈嫩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體受楼,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡垦搬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了艳汽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猴贰。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖河狐,靈堂內(nèi)的尸體忽然破棺而出米绕,到底是詐尸還是另有隱情,我是刑警寧澤馋艺,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布栅干,位于F島的核電站,受9級特大地震影響捐祠,放射性物質(zhì)發(fā)生泄漏碱鳞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一踱蛀、第九天 我趴在偏房一處隱蔽的房頂上張望劫笙。 院中可真熱鬧,春花似錦星岗、人聲如沸填大。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽允华。三九已至,卻和暖如春寥掐,著一層夾襖步出監(jiān)牢的瞬間靴寂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工召耘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留百炬,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓污它,卻偏偏與公主長得像剖踊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子衫贬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1德澈、引言 數(shù)據(jù)庫設(shè)計過程中表、字段等的命名規(guī)范也算是設(shè)計規(guī)范的一部分固惯,不過設(shè)計規(guī)范更多的是為了確保數(shù)據(jù)庫設(shè)計的合理...
    SnowflakeCloud閱讀 40,950評論 0 48
  • 這是全棧數(shù)據(jù)工程師養(yǎng)成攻略系列教程的第十一期:11 數(shù)據(jù)庫 MySQL使用方法梆造。 我們已經(jīng)掌握了如何用MAMP或W...
    宏倫工作室閱讀 1,040評論 0 3
  • MYSQL 基礎(chǔ)知識 1 MySQL數(shù)據(jù)庫概要 2 簡單MySQL環(huán)境 3 數(shù)據(jù)的存儲和獲取 4 MySQL基本操...
    Kingtester閱讀 7,778評論 5 116
  • 今天看到一位朋友寫的mysql筆記總結(jié),覺得寫的很詳細(xì)很用心葬毫,這里轉(zhuǎn)載一下镇辉,供大家參考下屡穗,也希望大家能關(guān)注他原文地...
    信仰與初衷閱讀 4,725評論 0 30
  • 每次中國武術(shù)被小看鸡捐,我們都會拿李小龍說事兒。而事實上麻裁,他也確有那樣的本事箍镜。 01 1961年,美國西雅圖一個平靜的...
    筆下長青閱讀 1,507評論 4 16