diff --git a/AutoBuildRunClass.py b/AutoBuildRunClass.py
new file mode 100644
index 0000000..d19f333
--- /dev/null
+++ b/AutoBuildRunClass.py
@@ -0,0 +1,54 @@
+# -*- coding:utf-8 -*-
+import os.path
+
+from FileParserClass import FileParser
+from MarkdownBuildClass import MarkDownBuild
+
+
+class AutoBuildRun:
+
+ def __init__(self):
+ pass
+
+ def run(self, dir):
+ md_dir = './md/'
+ content = ''
+ file = ''
+ try:
+ file = open(dir)
+ except IOError, e:
+ exit(e)
+ try:
+ content = file.read()
+ except:
+ exit('文件读取失败')
+ finally:
+ file.close()
+
+ file_parser = FileParser()
+ # 将文件分离为每张表
+ table_list = file_parser.separatTable(content)
+ # 解析出表中表名及表详情
+ table_name = file_parser.parserTableName(table_list)
+ # 解析出每张表字段情况并与表名表详情组合
+ table_data = file_parser.parserColumn(table_list, table_name)
+
+ markdown_build = MarkDownBuild()
+
+ text = markdown_build.buildMarkdown(table_data)
+ file_name = os.path.basename(dir).split('.')[0] + '.md'
+ # 写文件
+ file_obj = ''
+ try:
+ file_obj = open(md_dir + file_name, 'w')
+ except:
+ exit('文件创建失败')
+
+ try:
+ file_obj.write(text)
+ except:
+ exit('文件写入失败')
+ finally:
+ file_obj.close()
+
+ print '数据库>>'+dir+'<<文档已经成功创建,文件在md目录下.'
diff --git a/FileParserClass.py b/FileParserClass.py
index b46fcdc..b813040 100644
--- a/FileParserClass.py
+++ b/FileParserClass.py
@@ -1,16 +1,17 @@
# -*- coding:utf-8 -*-
import re
+
+
class FileParser:
def __init__(self):
pass
-
# 定义分离SQL文件匹配模式
# table_pattern = r'CREATE TABLE([\s\S]*?)LOCK TABLES' #分离表
table_pattern = r'CREATE TABLE([\s\S]*?);'
- name_pattern = r'.*?`(.*?)`.*?' # 获取表名称或字段名称
- table_content_pattern = r'COMMENT=\'(.*?)\'' #获取表详情
+ name_pattern = r'.*?`(.*?)`.*?' # 获取表名称或字段名称
+ table_content_pattern = r'COMMENT=\'(.*?)\'' # 获取表详情
def separatTable(self, content):
'''将SQL文件中各个表分离开来
@@ -89,11 +90,10 @@ def parserColumn(self, table_list, table_name):
else:
column_comment = ''
-
# if '\'' in tmp_list[-1]:
# column_comment = tmp_list[-1][1:-2]
# else:
# column_comment = ''
column_tmp.append([column_name, column_type, column_comment])
table_data.append([table_name[i], column_tmp])
- return table_data
\ No newline at end of file
+ return table_data
diff --git a/MarkdownBuildClass.py b/MarkdownBuildClass.py
index fe70f2a..0283d9c 100755
--- a/MarkdownBuildClass.py
+++ b/MarkdownBuildClass.py
@@ -1,6 +1,5 @@
# -*- coding:utf-8 -*-
class MarkDownBuild:
-
table_header = '|字段名称|字段类型|字段含义|\n|:---:|:---:|:---:|\n'
table_content_template = '|%s|%s|%s|\n'
@@ -9,15 +8,15 @@ def __init__(self):
def buildMarkdown(self, table_data):
text = '# 数据库文档\n\n'
- text += '\n\n## 数据表列表\n\n'
+ text += '\n\n## 数据表列表\n\n'
for table in table_data:
text = text + '* [' + table[0][0] + '(' + table[0][1] + ')](#' + table[0][0] + '_pointer)\n\n'
text += '\n\n## 数据表说明\n\n'
for table in table_data:
- text = text + '\n\n'
- text = text + '* ' + table[0][0] + '表(' + table[0][1] + ')[↑](#返回顶部)\n\n'
+ text = text + table[0][0] + '\n\n'
+ text = text + '* ' + table[0][0] + '表(' + table[0][1] + ')\n\n'
text += self.table_header
for column in table[1]:
text = text + '|' + column[0] + '|' + column[1] + '|' + column[2] + '|\n'
text += '\n'
- return text
\ No newline at end of file
+ return text
diff --git a/README.md b/README.md
index f1ccd14..09bda4b 100644
--- a/README.md
+++ b/README.md
@@ -7,10 +7,8 @@
2. 从数据库中导出sql文件,请尽量导出只有表结构无表数据的sql文件
-3. 在项目目录下运行:
-`python build.py sql_dir`
+3. 在项目目录下运行,多个sql文件空格分隔:
+`python build.py sql_dir.sql sql_dir_1.sql sql_dir_2.sql`
其中sql_dir为您的sql文件路径
4. 生成成功的md文件,在项目的md文件夹中,文件名同您的sql文件名
-
-[示例](http://blog.2liang.me/2016/03/06/%E4%BD%BF%E7%94%A8SQL%E6%96%87%E4%BB%B6%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90%E6%95%B0%E6%8D%AE%E5%BA%93%E6%96%87%E6%A1%A3/)
diff --git a/build.py b/build.py
index 298315a..1a4322b 100644
--- a/build.py
+++ b/build.py
@@ -1,56 +1,17 @@
# -*- coding:utf-8 -*-
-# Author : 我才是二亮 (unstring@163.com)
-import sys, os.path
-from FileParserClass import FileParser
-from MarkdownBuildClass import MarkDownBuild
+# Author : luck
+import sys
-if __name__ == '__main__':
+from AutoBuildRunClass import AutoBuildRun
- md_dir = './md/'
+if __name__ == '__main__':
- content = ''
- file = ''
- if (len(sys.argv) < 2):
+ if len(sys.argv) < 2:
exit('请输入SQL文件路径')
- dir = sys.argv[1]
- try:
- file = open(dir)
- except IOError, e:
- exit(e)
- try:
- content = file.read()
- except:
- exit('文件读取失败')
- finally:
- file.close()
-
- file_parser = FileParser()
- # 将文件分离为每张表
- table_list = file_parser.separatTable(content)
- # 解析出表中表名及表详情
- table_name = file_parser.parserTableName(table_list)
- # 解析出每张表字段情况并与表名表详情组合
- table_data = file_parser.parserColumn(table_list, table_name)
-
- markdown_build = MarkDownBuild()
-
- text = markdown_build.buildMarkdown(table_data)
- file_name = os.path.basename(dir).split('.')[0] + '.md'
- # 写文件
- file_obj = ''
- try:
- file_obj = open(md_dir + file_name, 'w')
- except:
- exit('文件创建失败')
-
- try:
- file_obj.write(text)
- except:
- exit('文件写入失败')
- finally:
- file_obj.close()
-
- print '数据库文档已经成功创建,文件在md目录下.'
+ autoBuildRun = AutoBuildRun()
+ argvNum = sys.argv.__len__() - 1
+ for i in range(1,sys.argv.__len__()):
+ autoBuildRun.run(sys.argv[i])