摘要:項(xiàng)目的數(shù)據(jù)庫(kù)字典表是一個(gè)很重要的文檔。了解了生成數(shù)據(jù)字典的原理后看一下實(shí)現(xiàn)代碼字段名字段類型默認(rèn)值注解上面的執(zhí)行結(jié)果會(huì)輸出格式的文件。數(shù)據(jù)庫(kù)表名字段名字段類型默認(rèn)值注解后面會(huì)寫一篇用生成數(shù)據(jù)庫(kù)關(guān)系圖。
項(xiàng)目的數(shù)據(jù)庫(kù)字典表是一個(gè)很重要的文檔。通過(guò)此文檔可以清晰的了解數(shù)據(jù)表結(jié)構(gòu)及開(kāi)發(fā)者的設(shè)計(jì)意圖。
通常為了方便我都是直接在數(shù)據(jù)庫(kù)中建表,然后通過(guò)工具導(dǎo)出數(shù)據(jù)字典。
在Mysql數(shù)據(jù)庫(kù)中有一個(gè)information_schema庫(kù),它提供了訪問(wèn)數(shù)據(jù)庫(kù)元數(shù)據(jù)的方式。
什么是元數(shù)據(jù)呢?就是關(guān)于數(shù)據(jù)的數(shù)據(jù),如數(shù)據(jù)庫(kù)名、表名、列的數(shù)據(jù)類型、訪問(wèn)權(quán)限等。
SCHEMATA表:提供了當(dāng)前mysql實(shí)例中所有數(shù)據(jù)庫(kù)的信息。是show databases的結(jié)果取之此表。
TABLES表:提供了關(guān)于數(shù)據(jù)庫(kù)中的表的信息(包括視圖)。詳細(xì)表述了某個(gè)表屬于哪個(gè)schema,表類型,表引擎,創(chuàng)建時(shí)間等信息。
show tables from schemaname的結(jié)果取之此表。
COLUMNS表:提供了表中的列信息。詳細(xì)表述了某張表的所有列以及每個(gè)列的信息.
show columns from schemaname.tablename的結(jié)果取之此表。
了解了生成數(shù)據(jù)字典的原理后看一下實(shí)現(xiàn)代碼:
#!/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) 字段名 | 字段類型 | 默認(rèn)值 | 注解 ---- | ---- | ---- | ---- """ 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!"
上面的執(zhí)行結(jié)果會(huì)輸出 markdown 格式的文件。
數(shù)據(jù)庫(kù)表名字段名 | 字段類型 | 默認(rèn)值 | 注解 |
---|
后面會(huì)寫一篇用Python生成數(shù)據(jù)庫(kù)關(guān)系圖。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/17596.html
摘要:項(xiàng)目的數(shù)據(jù)庫(kù)字典表是一個(gè)很重要的文檔。了解了生成數(shù)據(jù)字典的原理后看一下實(shí)現(xiàn)代碼字段名字段類型默認(rèn)值注解上面的執(zhí)行結(jié)果會(huì)輸出格式的文件。數(shù)據(jù)庫(kù)表名字段名字段類型默認(rèn)值注解后面會(huì)寫一篇用生成數(shù)據(jù)庫(kù)關(guān)系圖。 項(xiàng)目的數(shù)據(jù)庫(kù)字典表是一個(gè)很重要的文檔。通過(guò)此文檔可以清晰的了解數(shù)據(jù)表結(jié)構(gòu)及開(kāi)發(fā)者的設(shè)計(jì)意圖。通常為了方便我都是直接在數(shù)據(jù)庫(kù)中建表,然后通過(guò)工具導(dǎo)出數(shù)據(jù)字典。 在Mysql數(shù)據(jù)庫(kù)中有一個(gè)i...
摘要:一介紹是在版本中用于連接和操作服務(wù)器的一個(gè)庫(kù)引入方式二連接數(shù)據(jù)庫(kù)的完整流程引入模塊引入第三方庫(kù)創(chuàng)建連接對(duì)象用戶名密碼端口號(hào)默認(rèn)為且此處為整數(shù)類型數(shù)據(jù)庫(kù)名連接地址使用連接對(duì)象創(chuàng)建游標(biāo)對(duì)象游標(biāo)對(duì)象是通過(guò)鏈接對(duì)象進(jìn)行創(chuàng) ...
摘要:下面代碼會(huì)存在什么問(wèn)題,如何改進(jìn)一行代碼輸出之間的所有偶數(shù)。簡(jiǎn)述進(jìn)程之間如何通信多路復(fù)用的作用模型的區(qū)別什么是并發(fā)和并行解釋什么是異步非阻塞的作用面試題說(shuō)說(shuō)你知道的命令如何查看某次提交修改的內(nèi)容答案掃碼下面的二維碼訂閱即可獲取。 引言 最近在刷面試題,所以需要看大量的 Python 相關(guān)的面試題,從大量的題目中總結(jié)了很多的知識(shí),同時(shí)也對(duì)一些題目進(jìn)行拓展了,但是在看了網(wǎng)上的大部分面試題不...
閱讀 2087·2023-04-25 19:15
閱讀 2266·2021-11-23 09:51
閱讀 1273·2021-11-17 09:33
閱讀 2178·2021-08-26 14:15
閱讀 2493·2019-08-30 15:54
閱讀 1590·2019-08-30 15:54
閱讀 2178·2019-08-30 12:50
閱讀 1144·2019-08-29 17:08