python 3.7 生成数据库文档
开发阶段数据库总是有变动,开发人员需要维护文档给相关人员使用,故编写一个脚本自动生成数据库文档
生成的excel如下


import cx_Oracle
import os
from openpyxl import load_workbook
from openpyxl import Workbook
from openpyxl.styles import PatternFill os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' tableSql = "select * from user_tab_comments" tableColumnSql = "SELECT CC.column_name,CC.data_type,CC.data_length,CC.default_length,CM.comments " \
"FROM USER_TAB_COLUMNS cc INNER JOIN USER_COL_COMMENTS cm ON cc.column_name = cm.column_name " \
"WHERE CC.table_name ='%s' AND CM.table_name ='%s' ORDER BY CC.column_id"
'''
保存数据字典到指定./space目录下
space->环境(test,uat,pro)
usr->用户名
pwd->密码
host->主机名
sid->sid
''' def saveDbSchema(space, usr, pwd, host, sid):
isExsit = os.path.exists(space)
if not isExsit:
os.makedirs(space)
print("create dir->%s" % (space)) constr = "%s/%s@%s/%s" % (usr, pwd, host, sid)
print(constr)
conn = cx_Oracle.connect(constr)
cursor = conn.cursor() cursor.execute(tableSql) datas = cursor.fetchall() wb = Workbook()
# load_workbook("mergeData.xlsx")
title = ["字段名", "字段类型", "字段长度", "默认值", "备注"]
ws_inx = wb["Sheet"]
ws_inx.append(["表名", "备注", "链接"])
ws_inx.column_dimensions['A'].width = 30.0
ws_inx.column_dimensions['B'].width = 25.0
ws_inx.column_dimensions['C'].width = 10.0
for item in datas:
sql = tableColumnSql % (item[0], item[0])
cursor.execute(sql)
data = cursor.fetchall()
ws = wb.create_sheet(item[0])
ws.column_dimensions['A'].width = 20.0
ws.column_dimensions['B'].width = 12.0
ws.column_dimensions['C'].width = 10.0
ws.column_dimensions['D'].width = 20.0
ws.column_dimensions['E'].width = 30.0
ws.append(["表名", item[2], None, "返回"])
ws.cell(1, 4).hyperlink = "#Sheet!A1"
ws.cell(1, 4).fill = PatternFill("solid", fgColor="1874CD")
ws.append(title)
for inx, val in enumerate(data):
ws.append([val[0], val[1], val[2], val[3], val[4]])
ws_inx.append([item[0], str(item[2]), "链接"])
ws_inx.cell(ws_inx.max_row, ws_inx.max_column).hyperlink = "#'%s'!A1" % (item[0])
wb.save("./%s/%s.xlsx" % (space, usr)) print("ok")
python 3.7 生成数据库文档的更多相关文章
- 基于数据库的自动化生成工具,自动生成JavaBean、自动生成数据库文档等(v4.1.2版)
目录: 第1版:http://blog.csdn.net/vipbooks/article/details/51912143 第2版:htt ...
- 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.0.0版)
TableGo v6.0.0 版震撼发布,此次版本更新如下: 1.UI界面大改版,组件大调整,提升界面功能的可扩展性. 2.新增BeautyEye主题,界面更加清新美观,也可以通过配置切换到原生Jav ...
- 实用!一键生成数据库文档,堪称数据库界的Swagger
本文收录在个人博客:www.chengxy-nds.top,技术资料共享,同进步 最近部门订单业务调整,收拢其他业务线的下单入口,做个统一大订单平台.需要梳理各业务线的数据表,但每个业务线库都有近百张 ...
- 一键生成数据库文档,堪称数据库界的Swagger,有点厉害
最近部门订单业务调整,收拢其他业务线的下单入口,做个统一大订单平台.需要梳理各业务线的数据表,但每个业务线库都有近百张和订单相关的表,挨个表一个一个字段的弄脑瓜子嗡嗡的. 为了不重复 CV 操作,抱着 ...
- screw一键生成数据库文档
1. 简介 在项目开发和交付阶段,数据库文档是必不可少的.对于大型项目多个数据库几百甚至几千张表来说,手写数据库文档必然是耗时且痛苦的.因此需要一个插件自动生成文档. screw提供了多种文件 ...
- 数据库界的Swagger:一键生成数据库文档!
对于开发的API文档,我们可以通过Swagger等工具来自动生成了.但是对于数据库表结构的文档呢,在实际开发中在开发前我们一般会先设计好表结构,大家讨论一下, 这个时候就很需要有个数据库表结构的文档, ...
- Python处理Excel生成CSV文档
Python是一种解释型的.动态数据类型的.面向对象的高级程序设计语言.拥有丰富的处理数据和文本类库,并且得益于它是一种解释型的语言,在程序修改和功能扩展上,可以很容易做到大规模的调整.综合考虑Pyt ...
- java基础---->使用Itext生成数据库文档
这里简单的介绍一下使用Itext生成数据库表的文档.于是我们领教了世界是何等凶顽,同时又得知世界也可以变得温存和美好. 生成数据库的文档 一.maven项目需要引入的jar依赖 <depende ...
- sqlserver 脚本生成数据库文档
SELECT ( then d.name else '' end)表名, --a.colorder 字段序号, a.name 字段名, --(case ...
随机推荐
- Android repo 学习参考
/*************************************************************************** * Android repo 学习参考 * 说 ...
- Gym - 100570E:Palindrome Query (hash+BIT+二分维护回文串长度)
题意:给定字符串char[],以及Q个操作,操作有三种: 1:pos,chr:把pos位置的字符改为chr 2:pos:问以pos为中心的回文串长度为多长. 3:pos:问以pos,pos+1为中心的 ...
- Metaspoit的使用
一.环境的使用和搭建 首先我的攻击机和靶机都搭建在虚拟机上,选用的是VMware Workstation Pro虚拟机. 攻击机选用的是Linux kali 2017.2版本,而靶机安装的是XP sp ...
- 2017-2018-1 20179215《Linux内核原理与分析》第七周作业
一.实验部分:分析Linux内核创建一个新进程的过程. [第一部分] 根据要求完成第一部分,步骤如下: 1. 首先进入虚拟机,打开终端,这命令行依次敲入以下命令: cd LinuxKernel ...
- Django 发布
0.完成好 Django 项目,做部署前准备,比如 settings.py 改 debug 什么的. 1.用 Gunicorn 部署 Django 项目,相当于部署 Java Web 的 Tomcat ...
- 使用Rancher搭建K8S测试环境
使用Rancher搭建K8S测试环境 http://blog.csdn.net/csdn_duomaomao/article/details/75316926 环境准备(4台主机,Ubuntu16.0 ...
- Java常见设计模式之适配器模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能 ...
- JS开发中的一些小技巧和方法
生成指定范围内的随机数 当我们需要获取指定范围(min,max)内的整数的时候,下面的代码非常适合:这段代码用的还挺多的. function setRadomNum(min,max){ return ...
- hibernate 数据关联一对一
第一种一对一 person和card,card的id即作为主键,又作为外键 // 各村对方的一个对象 public class Person { private Integer id; privat ...
- jquery获取设置服务器控件的方法
jquery获取设置服务器控件的方法 获取TextBox,HiddenField,Label的值.例如: <asp:TextBox ID="txtBoxID" runat=& ...