摘要:項目的數據庫字典表是一個很重要的文檔。了解了生成數據字典的原理后看一下實現代碼字段名字段類型默認值注解上面的執行結果會輸出格式的文件。數據庫表名字段名字段類型默認值注解后面會寫一篇用生成數據庫關系圖。
項目的數據庫字典表是一個很重要的文檔。通過此文檔可以清晰的了解數據表結構及開發者的設計意圖。
通常為了方便我都是直接在數據庫中建表,然后通過工具導出數據字典。
在Mysql數據庫中有一個information_schema庫,它提供了訪問數據庫元數據的方式。
什么是元數據呢?就是關于數據的數據,如數據庫名、表名、列的數據類型、訪問權限等。
SCHEMATA表:提供了當前mysql實例中所有數據庫的信息。是show databases的結果取之此表。
TABLES表:提供了關于數據庫中的表的信息(包括視圖)。詳細表述了某個表屬于哪個schema,表類型,表引擎,創建時間等信息。
show tables from schemaname的結果取之此表。
COLUMNS表:提供了表中的列信息。詳細表述了某張表的所有列以及每個列的信息.
show columns from schemaname.tablename的結果取之此表。
了解了生成數據字典的原理后看一下實現代碼:
#!/usr/bin/env python # -*- coding: utf-8 -*- import mysql.connector as mysql import sys import getopt reload(sys) sys.setdefaultencoding("utf8") def usage(): print "help:" print "--host db server,default localhost" print "--port db port,default 3306" print "--user db username,default root" print "--password db password,default blank" print "--database db name" print "--output markdown output file,default current path" if __name__ == "__main__": try: opts,args = getopt.getopt(sys.argv[1:],"h",["help","host=","port=","database=","user=","password=","output="]) except getopt.GetoptError: sys.exit() if "help" in args: usage() sys.exit() print opts host = "localhost" user = "root" password = "" database = "" port = 3306 output = "./markdown.out" for op,value in opts: if op == "--host": host = value elif op == "--port": port = value elif op == "--database": database = value elif op == "--user": user = value elif op == "--password": password = value elif op == "--output": output = value elif op == "-h": usage() sys.exit() if database == "": usage() # sys.exit() conn = mysql.connect(host=host,port=port,user=user,password=password,database="information_schema") cursor = conn.cursor() cursor.execute("select table_name,table_comment from information_schema.tables where table_schema="%s" and table_type="base table"" % database) tables = cursor.fetchall() markdown_table_header = """### %s (%s) 字段名 | 字段類型 | 默認值 | 注解 ---- | ---- | ---- | ---- """ markdown_table_row = """%s | %s | %s | %s """ f = open(output,"w") for table in tables: cursor.execute("select COLUMN_NAME,COLUMN_TYPE,COLUMN_DEFAULT,COLUMN_COMMENT from information_schema.COLUMNS where table_schema="%s" and table_name="%s""% (database,table[0])) tmp_table = cursor.fetchall() p = markdown_table_header % table; for col in tmp_table: p += markdown_table_row % col f.writelines(p) f.writelines(" ") f.close() print "generate markdown success!"
上面的執行結果會輸出 markdown 格式的文件。
數據庫表名字段名 | 字段類型 | 默認值 | 注解 |
---|
后面會寫一篇用Python生成數據庫關系圖。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38542.html
摘要:項目的數據庫字典表是一個很重要的文檔。了解了生成數據字典的原理后看一下實現代碼字段名字段類型默認值注解上面的執行結果會輸出格式的文件。數據庫表名字段名字段類型默認值注解后面會寫一篇用生成數據庫關系圖。 項目的數據庫字典表是一個很重要的文檔。通過此文檔可以清晰的了解數據表結構及開發者的設計意圖。通常為了方便我都是直接在數據庫中建表,然后通過工具導出數據字典。 在Mysql數據庫中有一個i...
摘要:一介紹是在版本中用于連接和操作服務器的一個庫引入方式二連接數據庫的完整流程引入模塊引入第三方庫創建連接對象用戶名密碼端口號默認為且此處為整數類型數據庫名連接地址使用連接對象創建游標對象游標對象是通過鏈接對象進行創 ...
摘要:下面代碼會存在什么問題,如何改進一行代碼輸出之間的所有偶數。簡述進程之間如何通信多路復用的作用模型的區別什么是并發和并行解釋什么是異步非阻塞的作用面試題說說你知道的命令如何查看某次提交修改的內容答案掃碼下面的二維碼訂閱即可獲取。 引言 最近在刷面試題,所以需要看大量的 Python 相關的面試題,從大量的題目中總結了很多的知識,同時也對一些題目進行拓展了,但是在看了網上的大部分面試題不...
閱讀 1765·2021-09-22 15:10
閱讀 1261·2021-09-07 09:58
閱讀 2333·2019-08-30 15:44
閱讀 1635·2019-08-26 18:29
閱讀 2033·2019-08-26 13:35
閱讀 759·2019-08-26 13:31
閱讀 720·2019-08-26 11:42
閱讀 1065·2019-08-23 18:39