输出数据库设计文档Pgsql版本
背景
懒人必备导设计文档的数据库表结构
制作时间:2022年9月5日12:39:36
作者:huishao用途:一键输出数据库设计文档中的数据表
准备工作
导库
备注:docx是python3版本的docx操作库,直接install下载为Python2版本的,不兼容Python3
pip install psycopg2
pip install python-docx
脚本代码
#!/usr/bin/python3# 引入依赖
from docx import Document
from docx.shared import Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import nsdecls
from docx.oxml import parse_xml
import psycopg2
# # 打开数据库连接db = psycopg2.connect(database="oa", user="root", password="xxxxx", host="192.168.2.249", port="54321")# 处理 None
def xstr(s):return '' if s is None or s=='None' else str(s)schema_name = input('数据库名:')# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# 使用 cursor() 方法创建一个游标对象 cursor1
cursor1 = db.cursor()# 获取文档对象
document = Document()# 获取所有要遍历的表名
cursor.execute("""SELECT "TABLE_NAME" FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'active4j-test'""")
row = cursor.fetchall()
tables = [n[0] for n in row]# 循环数据库中的表
for t in tables:# 查询表的列名、数据类型、字符长度、是否允许空、默认值、备注信息cursor.execute(f"""SELECT COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,IS_NULLABLE,COLUMN_DEFAULT,col_description ( A.attrelid, A.attnum ) AS COMMENT FROM INFORMATION_SCHEMA.COLUMNS,pg_class AS C,pg_attribute AS A WHERE table_schema ='{schema_name}' AND table_name='{t}' AND C.relname = '{t}' AND A.attrelid = C.oid AND A.attnum > 0 AND A.attname = "COLUMN_NAME" """)# 文档添加换行符document.add_paragraph()# 文档添加表名document.add_paragraph('表名:%s' % t)# 文档添加表注释cursor1.execute(f"""select obj_description(c.oid) from pg_class c where obj_description(c.oid) is not null AND relname = '{t}'""")document.add_paragraph(i[0] for i in cursor1.fetchall())# 文档添加表格table = document.add_table(rows=1, cols=6)# 表格为灰色线条表格table.style = 'Table Grid'# 表格列宽度table.columns[0].width = Inches(0.49)# 表格第一行的属性赋值hdr_cells = table.rows[0].cellshdr_cells[0].add_paragraph('字段名').alignment = WD_ALIGN_PARAGRAPH.CENTERhdr_cells[1].add_paragraph('数据类型').alignment = WD_ALIGN_PARAGRAPH.CENTERhdr_cells[2].add_paragraph('长度').alignment = WD_ALIGN_PARAGRAPH.CENTERhdr_cells[3].add_paragraph('允许为空').alignment = WD_ALIGN_PARAGRAPH.CENTERhdr_cells[4].add_paragraph('默认值').alignment = WD_ALIGN_PARAGRAPH.CENTERhdr_cells[5].add_paragraph('描述').alignment = WD_ALIGN_PARAGRAPH.CENTER# 数据库游标获取各个数据库每个字段的各个属性,包括字符名称、数据类型、是否允许空、默认值、备注等信息table_fileds = cursor.fetchall()#对字段进行遍历,row为每个字段,下面的[0],[1]这些为获取到的属性,比如row_cell[0]获取的是字段名称,row_cell[1]获取的是数据类型for row in table_fileds:row_cells = table.add_row().cellsrow_cells[0].text = xstr(row[0])row_cells[1].text = xstr(row[1])row_cells[2].text = xstr(str(row[2]))row_cells[3].text = xstr(row[3])row_cells[4].text = xstr(str(row[4]))row_cells[5].text = xstr(str(row[5]))# 输出处理的表以及其字段的各个属性print('正在处理数据库表: ' + t + '...')_fields = [list(map(str, f)) for f in table_fileds]print(_fields)# 首行加底纹shading_list = locals()for i in range(6):shading_list['shading_elm_' + str(i)] = parse_xml(r'<w:shd {} w:fill="{bgColor}"/>'.format(nsdecls('w'), bgColor='cccccc'))table.rows[0].cells[i]._tc.get_or_add_tcPr().append(shading_list['shading_elm_' + str(i)])document.add_page_break()
# 此处可自定义路径,默认为脚本所在的路径下
document.save('demo.docx')
# 关闭数据库连接
db.close()
# 测试数据库连接
"""
用途:可测试数据库是否连通,连不通直接无法继续
"""
import psycopg2
# # 打开数据库连接
db = psycopg2.connect(database="oa", user="root", password="xxxxxx", host="192.168.2.249", port="54321")
cursor = db.cursor()
cursor.execute(""" SELECT "TABLE_NAME" FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'active4j-test' """)
for i in cursor.fetchall():print(i[0])# 此处输出有数据即可为成功
输出数据库设计文档Pgsql版本相关推荐
- SpringBoot 生成数据库设计文档工具
1.在项目的pom.xml里加上以上代码,配置想要生成的数据库的信息 <build><plugins><plugin><groupId>org.spri ...
- CYQ.DBImport 数据库反向工程及批量导数据库工具 V2.0 发布[增加批量导出数据库脚本及数据库设计文档]...
上次发布的:CYQ.DBImport V1.0的相关介绍:CYQ.DBImport 数据库反向工程及批量导数据库工具 V1.0 本次发布的V2.0 版本,准备突击海外,下面为相关的介绍. 一:新版本2 ...
- 使用Navicat将表设计导出数据库设计文档
我们在写数据库设计文档的时候,会需要对数据库表进行设计的编写,手动写的话会很费时间费精力,尤其是如果有大量的表需要写的时候,就更加浪费时间了.下面就让我给大家讲一个简单方法. 我的是在Navicat中 ...
- 生成数据库设计文档小技巧
目录 生成数据库设计文档小技巧 利用数据库自身功能生成excel和word文档 使用的软件环境说明 查询所有表名 查询所有列名 设置excel 生成数据库设计文档小技巧 利用数据库自身功能生成exce ...
- 【MySQL】数据库设计文档生成
MySQL数据库设计文档生成 文章目录 MySQL数据库设计文档生成 前言 0.全局浏览 1.引入依赖 2.启动类 3.配置文件 4.实现类 5.成品展示 前言 记录MySQL数据库设计文档生成,旨在 ...
- 自动生成数据库设计文档利器
目录 1.前言介绍 2.功能说明 3.编码实战 1.新建项目 2.导入依赖 3.启动类 4.工具类 5.测试 1.前言介绍 今天给大家介绍一款非常还用的小工具,专门用到生成数据库设计文档的,非常简单. ...
- 数据库设计文档生成工具类
在企业级开发中.我们经常会有编写数据库表结构文档的时间付出,如果数据库表结构更新了还得手动更新维护到文档中,很是繁琐.GitHub 上发现了一个好工具 screw(螺丝钉),在此分享下 1.引入依赖 ...
- 超好用的数据库设计文档生成工具
原创声明:本文为作者(幻好)原创,可用做学习参考转载,但需注明出处.禁止未经允许用于商业等途径,否则后果自负! 前言概述 随着开发场景的复杂度越来越高,存储数据的数据库表也越来越多并不断的更新.在开发 ...
- mysql自动生成数据库设计文档
mysql生成数据库设计文档 引入jar包 <!-- screw核心 --> <dependency><groupId>cn.smallbun.screw</ ...
最新文章
- Tech Ed上Windows 7值得关注的课程
- Programming Computer Vision with Python (学习笔记九)
- 清华大学计算机系毕业季博论 | 预荐未来的自己
- 百度地图——判断用户是否在配送范围内解决方案
- 【MySQL数据库开发之三】MySQL 获得数据库和表操作!
- ubuntu安装nginx-1.11.7
- java io 读取配置文件_(转)Java 读写Properties配置文件
- 电脑连接上无线网却没有网,手机却能上网怎么解决
- 全国地址SQL数据文件(精确到区县)
- 第一篇博客--有志者,事竟成
- 清除计算机用户缓存,清理缓存怎么清理_如何清理电脑缓存垃圾-win7之家
- 易捷web文件服务器软件,易捷文件共享Web服务器
- 基于webScoket的在线客服聊天
- lol服务器维护2021,lol维护公告最新时间2021.5.27 lol维护到几点
- 深度学习训练营之灵笼人物识别
- 宁强天津中学2021高考成绩查询,宁强县天津高级中学教务信息网
- 南京大学计算机 吴迪,南京大学(共206人).doc
- 【LeetCode】【剑指offer】【剪绳子(二)】
- 深度分析Palantir的投资价值,Palantir2023年将实现强劲反弹?
- Android 系统级别广播
热门文章
- php 考卷系统,基于jQuery试卷自动排版系统_jquery
- 版本号的正则表达式-下划线+短横线+点
- “暗黑流量”超大规模DDoS溯源分析
- 「Arm Arch」 总线微架构
- Pointnet2_pytorch代码复现
- VC C运行时库(CRTL)的几个版本及选用
- ITIL V3 Foundation考试通过心得
- Java实验报告一(完全数、一年四季、杨辉三角、path和classpath区别、next()和nextLine()区别)
- 2023-2028年中国硫氰酸胍(GTC)市场研究及前景投资预测报告
- css 实现带边框三角的气泡框(带三角箭头)