在工作中,会导出一份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. 基于MarkDown和Github图床以及SourceTree的一站式文章编辑和发布

    标题: 基于MarkDown和Github图床以及SourceTree的一站式文章编辑和发布 作者: 梦幻之心星 sky-seeker@qq.com 标签: [MarkDown,Github,图床,S ...

  2. Python对文本读写的操作方法【源码】

    Dear ALL 今天给大家分享的是 TXT文本读写方式,也是文件操作最常用的一种方式,主要内容有: 文件写方法 文件读方法 with open() as f 方法 话不多说,码上见: ''' 标题: ...

  3. 缺少对公共可见类型或成员的XML注释

    最近突然心血来潮,想清理下代码,结果看到了一堆这样的警告——缺少对公共可见类型或成员“XXX”的 XML 注释: 其实要想取消上面的警告,仅仅需要在项目属性里找到生成页签里的”错误和警告“项,在禁止显 ...

  4. C# 接口(interface) 抽象类(abstract)

    类代码: interface Employee { void ShowEmp(); } abstract class EmployeeInPostion: Employee { public abst ...

  5. 联通BSS-ESS-CBSS系统安装相关

    前言 1. 版本信息 版本 日期 记录 1.0 2016.08.15 初始版本 2. 作者信息 信息 内容 部门 夷陵区分公司 作者 Z.J.T 邮箱 coralfoxzjt@163.com 必须操作 ...

  6. Redundant Paths 分离的路径【边双连通分量】

    Redundant Paths 分离的路径 题目描述 In order to get from one of the F (1 <= F <= 5,000) grazing fields ...

  7. css盒子模型的深入理解,在块级、行内元素的区别和特性

    css盒子模型用于处理元素的内容.内边距.边框和外边距的方式简称.元素框的最内部分是实际的内容,直接包围内容的是内边距.内边距呈现了元素的背景.内边距的边缘是边框.边框以外是外边距,外边距默认是透明的 ...

  8. HotSpot的类模型(3)

    上一篇 HotSpot的类模型(2) 介绍了类模型的基础类Klass的重要属性及方法,这一篇介绍一下InstanceKlass及InstanceKlass的子类. 2.InstanceKlass类 每 ...

  9. angular入门--绑定字符串

    要使用angularjs,首先得下载并且在页面中调用它 先上源码 <html ng-app="app1"> <head> <meta name=&qu ...

  10. web前端知识点(JavaScript篇)

    call,apply,bind call,apply,bind这三者的区别,及内部实现原理,点这里 promise promise函数的内部实现原理,点这里 闭包 闭包就是能够读取其他函数内部变量的函 ...