用python生成mysql數據庫結構文檔
最近因為項目原因需要編寫數據庫設計文檔,但是由於數據表太多,手動編寫耗費的時間太久,所以搞瞭一個簡單的腳本快速生成數據庫結構,保存到word文檔中。
安裝pymysql和document
pip install pymysql pip install document
腳本
# -*- coding: utf-8 -*- import pymysql from docx import Document from docx.shared import Pt from docx.oxml.ns import qn db = pymysql.connect(host='127.0.0.1', #數據庫服務器IP port=3306, user='root', passwd='123456', db='test_db') #數據庫名稱) #根據表名查詢對應的字段相關信息 def query(tableName): #打開數據庫連接 cur = db.cursor() sql = "select b.COLUMN_NAME,b.COLUMN_TYPE,b.COLUMN_COMMENT from (select * from information_schema.`TABLES` where TABLE_SCHEMA='test_db') a right join(select * from information_schema.`COLUMNS` where TABLE_SCHEMA='test_db_test') b on a.TABLE_NAME = b.TABLE_NAME where a.TABLE_NAME='" + tableName+"'" cur.execute(sql) data = cur.fetchall() cur.close return data #查詢當前庫下面所有的表名,表名:tableName;表名+註釋(用於填充至word文檔):concat(TABLE_NAME,'(',TABLE_COMMENT,')') def queryTableName(): cur = db.cursor() sql = "select TABLE_NAME,concat(TABLE_NAME,'(',TABLE_COMMENT,')') from information_schema.`TABLES` where TABLE_SCHEMA='test_db_test'" cur.execute(sql) data = cur.fetchall() return data #將每個表生成word結構,輸出到word文檔 def generateWord(singleTableData,document,tableName): p=document.add_paragraph() p.paragraph_format.line_spacing=1.5 #設置該段落 行間距為 1.5倍 p.paragraph_format.space_after=Pt(0) #設置段落 段後 0 磅 #document.add_paragraph(tableName,style='ListBullet') r=p.add_run('\n'+tableName) r.font.name=u'宋體' r.font.size=Pt(12) table = document.add_table(rows=len(singleTableData)+1, cols=3,style='Table Grid') table.style.font.size=Pt(11) table.style.font.name=u'Calibri' #設置表頭樣式 #這裡隻生成瞭三個表頭,可通過實際需求進行修改 for i in ((0,'NAME'),(1,'TYPE'),(2,'COMMENT')): run = table.cell(0,i[0]).paragraphs[0].add_run(i[1]) run.font.name = 'Calibri' run.font.size = Pt(11) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '宋體') for i in range(len(singleTableData)): #設置表格內數據的樣式 for j in range(len(singleTableData[i])): run = table.cell(i+1,j).paragraphs[0].add_run(singleTableData[i][j]) run.font.name = 'Calibri' run.font.size = Pt(11) r = run._element r.rPr.rFonts.set(qn('w:eastAsia'), '宋體') #table.cell(i+1, 0).text=singleTableData[i][1] #table.cell(i+1, 1).text=singleTableData[i][2] #table.cell(i+1, 2).text=singleTableData[i][3] if __name__ == '__main__': #定義一個document document = Document() #設置字體默認樣式 document.styles['Normal'].font.name = u'宋體' document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體') #獲取當前庫下所有的表名信息和表註釋信息 tableList = queryTableName() #循環查詢數據庫,獲取表字段詳細信息,並調用generateWord,生成word數據 #由於時間匆忙,我這邊選擇的是直接查詢數據庫,執行瞭100多次查詢,可以進行優化,查詢出所有的表結構,在代碼裡面將每個表結構進行拆分 for singleTableName in tableList: data = query(singleTableName[0]) generateWord(data,document,singleTableName[1]) #保存至文檔 document.save('數據庫設計.docx')
生成的word文檔預覽
到此這篇關於用python生成mysql數據庫結構文檔的文章就介紹到這瞭,更多相關python生成mysql結構文檔內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 利用Python批量導出mysql數據庫表結構的操作實例
- Python docx庫代碼演示
- Python辦公自動化解決world文件批量轉換
- Python操作word文檔的示例詳解
- 詳解python-docx處理Word必備工具