利⽤Python将数据库建表语句转成表格的形式(可以⼤幅提⾼
书写数据库设计⽂档的效率)
⼀、遇到的问题
相信很多程序员都书写过数据库设计⽂档,⾥⾯往往需要给出该软件系统涉及到的所有数据库表的信息。如果是采⽤⼿动的⼀个个复制所有表的所有字段信息到word⽂档的表格中去,那⼀定是⼀件⾮常痛苦的事,费时且费⼒。上⽹搜索了⼀下也没有到合适的解决⽅案,以下是我提供的两种解决⽅案,特此记录与⼤家分享。
⼆、解决⽅案
⽅案⼀
拿到建表语句,利⽤word⾃带的⽂字转表格的功能来处理。具体步骤⼤家可以⾃⾏百度搜索⼀下,这⾥不展开说了。但这种⽅式需要对每⼀条建表语句做处理,构造成⼀定的格式才能转,依然不是很⽅便。
⽅案⼆
思路:
⾸先也是拿到建表语句,然后获取每⼀个字段中想要的信息,构造出⼀个⼆维列表来,其中⼀⾏代表⼀个字段,每⼀列代表了字段的相关信息,⽐如数据类型、长度等等。然后将这个⼆维列表写⼊到⼀个Excel⽂件中,最后就可以直接将内容复制粘贴到word的表格中去了。
代码:
【注】这段代码不需要其他第三⽅库的⽀持。
ddl = """`ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`MERCHANT_NAME` varchar(50) DEFAULT NULL COMMENT '商户名称',
`MERCHANT_NO` varchar(32) DEFAULT NULL COMMENT '企业编号',
`MERCHANT_ADDRESS` varchar(255) DEFAULT NULL COMMENT '企业地址',
`MERCHANT_TYPE` varchar(50) DEFAULT NULL COMMENT '商户类型',
`BUSINESS_LICENSES_IMG` varchar(100) DEFAULT NULL COMMENT '营业执照(企业证明)',
`ID_CARD_FRONT_IMG` varchar(100) DEFAULT NULL COMMENT '法⼈⾝份证正⾯照⽚',
`ID_CARD_AFTER_IMG` varchar(100) DEFAULT NULL COMMENT '法⼈⾝份证反⾯照⽚',
`USERNAME` varchar(50) DEFAULT NULL COMMENT '联系⼈姓名',
`MOBILE` varchar(50) DEFAULT NULL COMMENT '联系⼈⼿机号(关联统⼀账号)',
对系统架构图的解释`CONTACTS_ADDRESS` varchar(255) DEFAULT NULL COMMENT '联系⼈地址',
`AUDIT_STATUS` varchar(20) DEFAULT NULL COMMENT '审核状态。0-未申请,1-已申请待审核,2-审核通过,3-审核拒绝',
`TENANT_ID` bigint(20) DEFAULT NULL COMMENT '租户ID,关联统⼀⽤户',"""
# 表头
result = [['序号', '列名', '数据类型', '长度', '允许空', '说明']]
# 将语句按⾏拆分成⼀个列表
spam = ddl.split('\n')
for i in range(len(spam)):
s = spam[i]
s = s.strip() # 删除字符串两边的空⽩字符
s = s.replace('NOT NULL AUTO_INCREMENT COMMENT', '否') # 允许空设为否unix操作系统是一种软件嘛
s = s.replace('DEFAULT NULL COMMENT', '是') # 允许空设为是
# 长度
s = s.replace('(', ' ')
s = s.replace(')', '')
# 去除`和'以及⾏尾的,
s = s.replace('`', '')
s = s.replace("'", '')
s = s.replace(',', '')
temp = s.split(' ') # 将每⼀⾏再按空格拆分成⼀个列表
select语句的基本结构temp.insert(0, str(i + 1)) # 设置序号
result.append(temp) # 构建⼆维列表
# 构建⼆维列表完毕,准备写⼊Excel⽂件中。当然前提是得先创建⼀个Excel⽂档,这⾥我是在D盘下创建了⼀个名为out.xlsx的Excel⽂档。
output = open('D:\\out.xlsx', 'w', encoding='gbk')
for i in range(len(result)):
for j in range(len(result[i])):
python是什么意思17ooutput.write(result[i][j])
output.write('\t') # 相当于Tab⼀下,换⼀个单元格
python基础代码写字output.write('\n') # 写完⼀⾏⽴马换⾏
output.close()
效果:
⽅案三
c语言函数调用题答案三、感悟
作为⼀个程序员要时刻以程序员的思维来思考问题,编程的⽬的就是为了让繁琐⼯作⾃动化。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论