背景

懒人必备导设计文档的数据库表结构

制作时间: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版本相关推荐

  1. SpringBoot 生成数据库设计文档工具

    1.在项目的pom.xml里加上以上代码,配置想要生成的数据库的信息 <build><plugins><plugin><groupId>org.spri ...

  2. CYQ.DBImport 数据库反向工程及批量导数据库工具 V2.0 发布[增加批量导出数据库脚本及数据库设计文档]...

    上次发布的:CYQ.DBImport V1.0的相关介绍:CYQ.DBImport 数据库反向工程及批量导数据库工具 V1.0 本次发布的V2.0 版本,准备突击海外,下面为相关的介绍. 一:新版本2 ...

  3. 使用Navicat将表设计导出数据库设计文档

    我们在写数据库设计文档的时候,会需要对数据库表进行设计的编写,手动写的话会很费时间费精力,尤其是如果有大量的表需要写的时候,就更加浪费时间了.下面就让我给大家讲一个简单方法. 我的是在Navicat中 ...

  4. 生成数据库设计文档小技巧

    目录 生成数据库设计文档小技巧 利用数据库自身功能生成excel和word文档 使用的软件环境说明 查询所有表名 查询所有列名 设置excel 生成数据库设计文档小技巧 利用数据库自身功能生成exce ...

  5. 【MySQL】数据库设计文档生成

    MySQL数据库设计文档生成 文章目录 MySQL数据库设计文档生成 前言 0.全局浏览 1.引入依赖 2.启动类 3.配置文件 4.实现类 5.成品展示 前言 记录MySQL数据库设计文档生成,旨在 ...

  6. 自动生成数据库设计文档利器

    目录 1.前言介绍 2.功能说明 3.编码实战 1.新建项目 2.导入依赖 3.启动类 4.工具类 5.测试 1.前言介绍 今天给大家介绍一款非常还用的小工具,专门用到生成数据库设计文档的,非常简单. ...

  7. 数据库设计文档生成工具类

    在企业级开发中.我们经常会有编写数据库表结构文档的时间付出,如果数据库表结构更新了还得手动更新维护到文档中,很是繁琐.GitHub 上发现了一个好工具 screw(螺丝钉),在此分享下 1.引入依赖 ...

  8. 超好用的数据库设计文档生成工具

    原创声明:本文为作者(幻好)原创,可用做学习参考转载,但需注明出处.禁止未经允许用于商业等途径,否则后果自负! 前言概述 随着开发场景的复杂度越来越高,存储数据的数据库表也越来越多并不断的更新.在开发 ...

  9. mysql自动生成数据库设计文档

    mysql生成数据库设计文档 引入jar包 <!-- screw核心 --> <dependency><groupId>cn.smallbun.screw</ ...

最新文章

  1. Tech Ed上Windows 7值得关注的课程
  2. Programming Computer Vision with Python (学习笔记九)
  3. 清华大学计算机系毕业季博论 | 预荐未来的自己
  4. 百度地图——判断用户是否在配送范围内解决方案
  5. 【MySQL数据库开发之三】MySQL 获得数据库和表操作!
  6. ubuntu安装nginx-1.11.7
  7. java io 读取配置文件_(转)Java 读写Properties配置文件
  8. 电脑连接上无线网却没有网,手机却能上网怎么解决
  9. 全国地址SQL数据文件(精确到区县)
  10. 第一篇博客--有志者,事竟成
  11. 清除计算机用户缓存,清理缓存怎么清理_如何清理电脑缓存垃圾-win7之家
  12. 易捷web文件服务器软件,易捷文件共享Web服务器
  13. 基于webScoket的在线客服聊天
  14. lol服务器维护2021,lol维护公告最新时间2021.5.27 lol维护到几点
  15. 深度学习训练营之灵笼人物识别
  16. 宁强天津中学2021高考成绩查询,宁强县天津高级中学教务信息网
  17. 南京大学计算机 吴迪,南京大学(共206人).doc
  18. 【LeetCode】【剑指offer】【剪绳子(二)】
  19. 深度分析Palantir的投资价值,Palantir2023年将实现强劲反弹?
  20. Android 系统级别广播

热门文章

  1. php 考卷系统,基于jQuery试卷自动排版系统_jquery
  2. 版本号的正则表达式-下划线+短横线+点
  3. “暗黑流量”超大规模DDoS溯源分析
  4. 「Arm Arch」 总线微架构
  5. Pointnet2_pytorch代码复现
  6. VC C运行时库(CRTL)的几个版本及选用
  7. ITIL V3 Foundation考试通过心得
  8. Java实验报告一(完全数、一年四季、杨辉三角、path和classpath区别、next()和nextLine()区别)
  9. 2023-2028年中国硫氰酸胍(GTC)市场研究及前景投资预测报告
  10. css 实现带边框三角的气泡框(带三角箭头)