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 ...
随机推荐
- poj3585 Accumulation Degree[树形DP换根]
思路其实非常简单,借用一下最大流求法即可...默认以1为根时,$f[x]$表示以$x$为根的子树最大流.转移的话分两种情况,一种由叶子转移,一种由正常孩子转移,判断一下即可.换根的时候由頂向下递推转移 ...
- linux下mysql配置查询
1.查看mysql的数据文件存放位置 show variables; 显示结果中的: datadir的值即是. 2.查看mysql是否支持表分区 SHOW VARIABLES LIKE '%parti ...
- css动画和渐变
变形: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 元素的变形:transform transform:none | <tra ...
- Python-RabbitMQ消息队列的发布与订阅
RabbitMQ消息队列的发布与订阅类似于广播,一端发送消息,多个客户端可以同时接收到消息 fanout:所有绑定到exchange的queue都可以接收消息 消息发布端 # -*- coding:u ...
- C++ 替换字符串内某个字符或子串
1. 问题描述 string s="abc"; string tmp="1"; 2.解决方案 // tmp 必须为字符串 // 第一个 1 表示 s 中的位置 ...
- C#自定义控件 ————进度条
先看看样式 一个扇形的进度条 对外公开的方法和属性 事件 value_change;//值改变时触发的事件progress_finshed;//进度条跑完时触发的事件 属性 Max_value//获取 ...
- cdh ntpdate 问题
ntpdc -np 一个正常一个不正常
- python 基础 序列化
转自https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00138683221577 ...
- [matlab]Monte Carlo模拟学习笔记
理论基础:大数定理,当频数足够多时,频率可以逼近概率,从而依靠概率与$\pi$的关系,求出$\pi$ 所以,rand在Monte Carlo中是必不可少的,必须保证测试数据的随机性. 用蒙特卡洛方法进 ...
- sklearn解决过拟合的例子
Learning curve 检视过拟合 sklearn.learning_curve 中的 learning curve 可以很直观的看出我们的 model 学习的进度, 对比发现有没有 overf ...