公司要将Django项目重构成Java项目,也就有了整理数据库文档的经历。。。。。。。

由于django从model迁移时没有将注释(也就是模型类中的verbose_name)写进mysql的表中,导致从MySQL导出的数据文件中没有注释。

想代码解决吧,查了一下,没有可参考的例子(没翻墙的情况下)。没办法,只能自己写了,毕竟模型类就在那里,它是跑不掉的,想办法把它揪出来就行了。话不多说,直接上代码

1、引入用到的工具包,反正csv可以直接转成Excel,而且python用它写入比用其它Excel依赖包要快

from django.apps import apps
import csv

2、需要导出的模块

apps_list = ['模块1', '模块2', '模块3', ...]  # 我只需要导出部分模块的表,django本身有不少表,项目基本没用它的表,而且项目引用了很多第三方依赖,不少依赖都产生了工具表,那些就也没必要
#如果需要导出全部的模块
#apps_list = [item for item in apps.all_models.keys()] # 这里可以得到所有的模块名称

3、嵌套循环模块下的表和字段,并对字段做处理

model_list = apps.get_models()  # 得到所有模型类名
f = open('数据表导出文件.csv', 'w', encoding='utf-8', newline='')
csv_writer = csv.writer(f)
for model in model_list:
for app in apps_list:
try:
db_model = apps.get_model(app, model._meta.object_name)
except Exception:
continue
table_name = db_model._meta.db_table # 表名
table_zh_name = db_model._meta.verbose_name # 获取表的中文名
csv_writer.writerow(['', table_name, table_zh_name])
csv_writer.writerow(["序号", "字段", "说明", '数据类型', '长度', '允许空', '关联表'])
fields = db_model._meta.fields
i = 0
for item in fields:
i += 1
name = item.name
max_length = item.max_length
null = '√' if item.null else '×'
relation_table_name = ''
field_type = item.description._proxy____args[0]
if field_type == 'Integer':
field_type = 'int'
elif field_type == 'Date (with time)':
field_type = 'datetime'
elif field_type == 'Date (without time)':
field_type = 'date'
elif field_type == 'Boolean (Either True or False)':
field_type = 'tinyint'
elif field_type == 'String (up to %(max_length)s)':
field_type = 'varchar'
elif field_type == 'Small integer':
field_type = 'smallint'
elif field_type == 'Floating point number':
field_type = 'double'
elif field_type == 'Foreign Key (type determined by related field)':
field_type = 'int'
elif field_type == 'Email address':
field_type = 'varchar'
if item.is_relation:
name = str(name) + '_id'
relation_table_name = item.related_model._meta.db_table
csv_writer.writerow([i, name, item.verbose_name, field_type, max_length, null, relation_table_name])
f.close()

点击一下, 一百多个表已报不到两秒钟就完事了,方便,简单,快捷。。。。

django 整理数据库文档时,从mysql导出的表中没有注释的解决方案的更多相关文章

  1. mysql 导出每张表中的100条数据..............

    windows下配好MYSQL 环境变量,cmd 然后: mysqldump -uroot -p123 [数据库名]--where "1=1 limit 100" --lock-a ...

  2. 【C#附源码】数据库文档生成工具支持(Excel+Html)

    [2015] 很多时候,我们在生成数据库文档时,使用某些工具,可效果总不理想,不是内容不详细,就是表现效果一般般.很多还是word.html的.看着真是别扭.本人习惯用Excel,所以闲暇时,就简单的 ...

  3. 基于Mybatis的Mysql数据库文档生成工具,支持生成docx(原创)

    今天不写android--也写写数据库相关的东西 -------------------- 今日老夫闲来无事,设计了一款数据库文档生成工具 眼下仅仅支持mysql 主要是生成docx的 下载链接:下载 ...

  4. “全能”选手—Django 1.10文档中文版Part1

    本文是博主翻译的Django1.10版本官方文档的第一部分,如时间充裕,争取一直翻译下去,经验不足,或有错漏,敬请指正. 另外对于公开文档进行翻译的版权问题不是很清楚,如有侵权请联系我! 另外,要转载 ...

  5. Django 1.10文档中文版Part1

    目录 第一章.Django1.10文档组成结构1.1 获取帮助1.2 文档的组织形式1.3 第一步1.4 模型层1.5 视图层1.6 模板层1.7 表单1.8 开发流程1.9 admin站点1.10 ...

  6. 实用!一键生成数据库文档,堪称数据库界的Swagger

    本文收录在个人博客:www.chengxy-nds.top,技术资料共享,同进步 最近部门订单业务调整,收拢其他业务线的下单入口,做个统一大订单平台.需要梳理各业务线的数据表,但每个业务线库都有近百张 ...

  7. 基于数据库的自动化生成工具,自动生成JavaBean、自动生成数据库文档等(v4.1.2版)

            目录:            第1版:http://blog.csdn.net/vipbooks/article/details/51912143            第2版:htt ...

  8. 一键生成数据库文档,堪称数据库界的Swagger,有点厉害

    最近部门订单业务调整,收拢其他业务线的下单入口,做个统一大订单平台.需要梳理各业务线的数据表,但每个业务线库都有近百张和订单相关的表,挨个表一个一个字段的弄脑瓜子嗡嗡的. 为了不重复 CV 操作,抱着 ...

  9. DBCHM -最简单、最实用的数据库文档生成工具

    项目介绍 DBCHM 是一款数据库文档生成工具! 该工具从最初支持chm文档格式开始,通过开源,集思广益,不断改进,又陆续支持word.excel.pdf.html.xml.markdown等文档格式 ...

随机推荐

  1. Java读源码之ReentrantLock(2)

    前言 本文是 ReentrantLock 源码的第二篇,第一篇主要介绍了公平锁非公平锁正常的加锁解锁流程,虽然表达能力有限不知道有没有讲清楚,本着不太监的原则,本文填补下第一篇中挖的坑. Java读源 ...

  2. 使用 Chrome 插件 Vimium 打造黑客浏览器

    之前一直用 cVim,与 Vimium 功能类似,但是之后不在更新了,故转战到 Vimium. 简介 官网:http://vimium.github.io/ Vimium 是 Google Chrom ...

  3. Docker-Bridge Network 03 自定义网络

    本节介绍自定义bridge network的自定义网络. 1.前言2.创建自定义网络2.1 创建网络2.2 指定网段创建网络3.创建容器3.1 指定网络创建容器3.2 指定IP创建容器4.通信4.1 ...

  4. 拍照购物APP之可行性分析

    你一定有过这样的生活经历:走在路上发现一个陌生人的穿着非常符合自己的穿衣品味,想要购买一件同样款式的衣服却找不到购买地址,偷偷拍了张照片也只能留作纪念.此时,在手机上安装一款通过图片进行购物搜索的AP ...

  5. E - Aladdin and the Flying Carpet

    It's said that Aladdin had to solve seven mysteries before getting the Magical Lamp which summons a ...

  6. PHP Curl 请求https 60错误解决办法

      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 

  7. django基础(一) - 安装和配置文件

    django介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C. <div style='color: red'> ...

  8. TensorFlow的模型保存与加载

    import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf #tensorboard --logdir=&qu ...

  9. php 关于 & 引用赋值

    $a = ; $b = ; echo $a . echo $b . $a = $b; echo $a . echo $b . $a = &$b; echo $a . echo $b . $a ...

  10. tp5--model的坑

    先上代码: class Article extends Model { //获取全部文章 public function getArticleAll($id,$page) { $cate = new ...