在工作中,会导出一份mysql的html来查看,用的是就是路过秋天大神的那个工具,所以想自己用那个样式直接在后端写一个页面做展示!

前端页面

from flask import Flask,request,render_template
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db' #这里用这个是不行的 注意修改为mysql 才可以正常使用
db = SQLAlchemy(app) @app.route("/listModel", methods=["GET"])
def listModel():
dbName = request.args.get("dbname","xx")
tableStr = """select table_name,table_comment from information_schema.tables where TABLE_TYPE='BASE TABLE' and table_schema='{}'""".format(
dbName)
resultList = db.engine.execute(tableStr)
_infoList = []
if resultList:
for index, result in enumerate(resultList):
tableName = result[0]
filedStr = """select ORDINAL_POSITION,column_name,COLUMN_COMMENT,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,numeric_precision,numeric_scale,COLUMN_KEY,COLUMN_DEFAULT,IS_NULLABLE from information_schema.columns where table_schema='{}' and table_name='{}'""".format(
dbName, tableName)
filedList = db.engine.execute(filedStr)
_infolist = []
if filedList:
for field in filedList:
if field[5]:
CHARACTER_MAXIMUM_LENGTH = field[5]
elif field[4]:
CHARACTER_MAXIMUM_LENGTH = field[4]
else:
CHARACTER_MAXIMUM_LENGTH = 0
if field[9] == "YES":
IS_NULLABLE = "Y"
else:
IS_NULLABLE = "N"
_infoDict = {
"ORDINAL_POSITION": field[0],
"column_name": field[1],
"COLUMN_COMMENT": field[2],
"DATA_TYPE": field[3],
"CHARACTER_MAXIMUM_LENGTH": CHARACTER_MAXIMUM_LENGTH,
"numeric_scale": field[6] if field[6] else 0,
"COLUMN_KEY": "Y" if field[7] else "",
"COLUMN_DEFAULT": field[8] if field[8] else "",
"IS_NULLABLE": IS_NULLABLE,
}
_infolist.append(_infoDict)
infoDict = {
"index": index + 1,
"tableName": tableName,
"table_comment": result[1],
"fields": _infolist
}
_infoList.append(infoDict)
return render_template("demos.html", rows=_infoList,dbName=dbName) if __name__ == '__main__':
app.run()

然后是 html 静态页面

### html

<html>
<head><title>数据库设计文档 -- {{ dbName }}</title>
<style type='text/css'>body, td {
font-family: verdana;
font-size: 12px;
line-height: 150%;
} table {
width: 100%;
background-color: #ccc;
margin: 5px 0;
} td {
background-color: #fff;
padding: 3px;
padding-left: 10px;
} thead td {
text-align: center;
font-weight: bold;
background-color: #eee;
} a:link, a:visited, a:active {
color: #015FB6;
text-decoration: none;
} a:hover {
color: #E33E06;
}</style>
</head>
<body style='text-align:center;background-image: url("{{ url_for("static",filename='18066.jpg') }}")'>
<div style='width:800px; margin:20px auto; text-align:left;'>
<a name='index'>
<H2 style='text-align:center; line-height:50px;'>数据库设计文档</H2>
<div><b>数据库名:{{ dbName }}</b></div>
<table cellspacing='' cellpadding=''>
<thead>
<tr>
<td style='width:40px; '>序号</td>
<td>表名</td>
<td>说明</td>
</tr>
</thead>
{% for x in rows %}
<tr>
<td style='text-align:center;'>{{ x.index }}</td>
<td><a href='#{{ x.tableName }}'>{{ x.tableName }}</a></td>
<td>{{ x.table_comment }}</td>
</tr>
{% endfor %}
</table>
</a>
{% for x in rows %}
<a name='{{ x.tableName }}'></a>
<div style='margin-top:30px;'><a href='#index'
style='float:right; margin-top:6px;'>返回目录</a><b>表名:{{ x.tableName }}</b>
</div>
<div>说明:{{ x.table_comment }}</div>
<div>数据列:</div>
<table cellspacing='' cellpadding=''>
<thead>
<tr>
<td style='width:40px; '>序号</td>
<td>名称</td>
<td>数据类型</td>
<td>长度</td>
<td>小数位</td>
<td>允许空值</td>
<td>主键</td>
<td>默认值</td>
<td>说明</td>
</tr>
</thead>
{% for z in x.fields %}
<tr>
<td style='text-align:center;'>{{ z.ORDINAL_POSITION }}</td>
<td>{{ z.column_name }}</td>
<td align='center'>{{ z.DATA_TYPE }}</td>
<td align='center'>{{ z.CHARACTER_MAXIMUM_LENGTH }}</td>
<td align='center'>{{ z.numeric_scale }}</td>
<td align='center'>{{ z.IS_NULLABLE }}</td>
<td align='center'>{{ z.COLUMN_KEY }}</td>
<td>{{ z.COLUMN_DEFAULT }}</td>
<td>{{ z.COLUMN_COMMENT }}</td>
</tr>
{% endfor %}
</table>
{% endfor %}
</div>
</body>
</html>

flask下直接展示mysql数据库 字段的更多相关文章

  1. Linux下自动备份MySQL数据库并上传到远程FTP服务器

    Linux下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本 说明:  1.备份MySQL数据库存放目录/var/lib/mysql下面的xshelldata数据库 ...

  2. Linux下定时备份MySQL数据库的Shell脚本

    Linux下定时备份MySQL数据库的Shell脚本   对任何一个已经上线的网站站点来说,数据备份都是必须的.无论版本更新还是服务器迁移,备份数据的重要性不言而喻.人工备份数据的方式不单耗费大量时间 ...

  3. Flask项目中使用mysql数据库启动项目是发出警告

    Flask项目中使用mysql数据库启动项目是发出警告: Warning: (1366, "Incorrect string value: '\xD6\xD0\xB9\xFA\xB1\xEA ...

  4. CentOS 6.3下Zabbix监控MySQL数据库参数

    系统环境:CentOS 6.3 x64  http://www.linuxidc.com/Linux/2012-12/76583.htm mysql:    mysql-5.6.10 http://w ...

  5. Flask与mysql数据库字段类型的区别以及基本用法

    Mysql里面的int在Flask中里面使用Integer Mysql里面的varcahar在Flask中里面使用String 与Mysql数据库需要导入模块 #导入第三方链接库sql点金术 from ...

  6. *CentOS下简单的MySQL数据库操作

    1.登录成功之后退出的话,直接输入quit或者exit即可.

  7. Elasticsearch学习(2) windows环境下Elasticsearch同步mysql数据库

    在上一章中,我们已经能够通过spring boot来使用Elasticsearch,但是由于我们习惯性的将数据写入mysql,所以为了解决这个问题,Elasticsearch为我们提供了一个插件log ...

  8. Linux下C++访问MySQL数据库

    由于想要开始了解并学习用LAMP进行web开发,所以昨晚我在Fedora上安装了MySQL,学习了MySQL的几个常用命令.想着在学习进行web开发(PHP访问数据库)之前,先用我熟悉的C++连接数据 ...

  9. CentOS6.5下简单的MySQL数据库操作

    1.登录成功之后退出的话,直接输入quit或者exit即可.

随机推荐

  1. 3、struct2的常见配置

    1.在eclipse中如何复制一个工程作为一个新的工程 在struct.xml中: <result name="success">/login_sucess.jsp&l ...

  2. Java | 内部类(Inner Class)

    前言 本文内容主要来自 Java 官方教程中的<嵌套类>章节. 本文提供的是 JDK 14 的示例代码. 定义 内部类(Inner Class),是 Java 中对类的一种定义方式,是嵌套 ...

  3. 安全测试中session和cookie

    很多朋友做过安全测试应该都知道session和cookies他们的不同点: 1.存取方式不同.----cookie不支持中文,需要编码,仅支持ascll值.session能够存取任何类型的数据,包括j ...

  4. 入门大数据---Hbase搭建

    环境介绍 tuge1 tuge2 tuge3 tuge4 NameNode NameNode DataNode DataNode ZooKeeper ZooKeeper ZooKeeper ZooKe ...

  5. 手摸手带你理解Vue的Watch原理

    前言 watch 是由用户定义的数据监听,当监听的属性发生改变就会触发回调,这项配置在业务中是很常用.在面试时,也是必问知识点,一般会用作和 computed 进行比较. 那么本文就来带大家从源码理解 ...

  6. 从别人的代码中学习golang系列--01

    自己最近在思考一个问题,如何让自己的代码质量逐渐提高,于是想到整理这个系列,通过阅读别人的代码,从别人的代码中学习,来逐渐提高自己的代码质量.本篇是这个系列的第一篇,我也不知道自己会写多少篇,但是希望 ...

  7. SharePoint删除图片库文件

    SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite site = new SPSite(SPContext.Current. ...

  8. 「MoreThanJava」Day2:变量、数据类型和运算符

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  9. Face The Right Way思维。。。

    题目再次链接 题意: 已知01序列a,求进行定长子串取反的最少操作次数,以及最少时的定长. 分析: 首先,先想一想怎么暴力吧.这样想:要保证最小,那么必然不会对同一个区间反转两次,而在k一定时,则不会 ...

  10. 12个Visual Studio调试效率技巧

    在这篇文章中,我们假定读者了解VS基本的调试知识,如: F5 开始使用调试器运行程序 F9 在当前行设置断点 F10 运行到下一个断点处 F5 从被调试的已停止程序恢复执行 F11 步进到函数内(如果 ...