flask下直接展示mysql数据库 字段
在工作中,会导出一份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数据库 字段的更多相关文章
- Linux下自动备份MySQL数据库并上传到远程FTP服务器
Linux下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本 说明: 1.备份MySQL数据库存放目录/var/lib/mysql下面的xshelldata数据库 ...
- Linux下定时备份MySQL数据库的Shell脚本
Linux下定时备份MySQL数据库的Shell脚本 对任何一个已经上线的网站站点来说,数据备份都是必须的.无论版本更新还是服务器迁移,备份数据的重要性不言而喻.人工备份数据的方式不单耗费大量时间 ...
- Flask项目中使用mysql数据库启动项目是发出警告
Flask项目中使用mysql数据库启动项目是发出警告: Warning: (1366, "Incorrect string value: '\xD6\xD0\xB9\xFA\xB1\xEA ...
- 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 ...
- Flask与mysql数据库字段类型的区别以及基本用法
Mysql里面的int在Flask中里面使用Integer Mysql里面的varcahar在Flask中里面使用String 与Mysql数据库需要导入模块 #导入第三方链接库sql点金术 from ...
- *CentOS下简单的MySQL数据库操作
1.登录成功之后退出的话,直接输入quit或者exit即可.
- Elasticsearch学习(2) windows环境下Elasticsearch同步mysql数据库
在上一章中,我们已经能够通过spring boot来使用Elasticsearch,但是由于我们习惯性的将数据写入mysql,所以为了解决这个问题,Elasticsearch为我们提供了一个插件log ...
- Linux下C++访问MySQL数据库
由于想要开始了解并学习用LAMP进行web开发,所以昨晚我在Fedora上安装了MySQL,学习了MySQL的几个常用命令.想着在学习进行web开发(PHP访问数据库)之前,先用我熟悉的C++连接数据 ...
- CentOS6.5下简单的MySQL数据库操作
1.登录成功之后退出的话,直接输入quit或者exit即可.
随机推荐
- 实战:IDEA运行速度调优
序言 可能大家觉得系统调优一般都是针对服务端应用而言的,普通Java开发人员很少有机会实践.今天就通用一个Java开发人员日常工作中经常使用的开发工具开做一次调优实战. 我在日常工作中的主要IDE工具 ...
- 深度学习“四大名著”发布!Python、TensorFlow、机器学习、深度学习四件套!
Python 程序员深度学习的"四大名著": 这四本书着实很不错!我们都知道现在机器学习.深度学习的资料太多了,面对海量资源,往往陷入到"无从下手"的困惑出境. ...
- Python实用笔记 (4)循环
for...in循环 names = ['Michael', 'Bob', 'Tracy'] for name in names: print(name) 运行如下: Michael Bob Trac ...
- Python实用笔记 (7)高级特性——切片
列表L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] 取前3个元素 >>> L[0:3] ['Michael', 'Sarah', ' ...
- 补充:回答网友的问题,如何不用路径,而直接将CImage画到DC中,之后DC一起显示.
补充:回答网友的问题,如何不用路径,而直接将CImage画到DC中,之后DC一起显示.注释掉 pDC->BeginPath(); // 打开路径层 pDC->Rectangle(0,0,p ...
- CentOS 7 内核更新后删除旧内核(转载)
CentOS 7 内核更新后删除旧内核 0.当前 # uname -sr Linux 3.10.0-123.20.1.el7.x86_64 1.搜索查询 # rpm -q kernel kernel- ...
- RSS阅读器推荐
http://www.feeddemon.com/ Windows,Free (完)
- tomcat结合shiro无文件webshell的技术研究以及检测方法
0x01简介 shiro结合tomcat回显,使用公开的方法,回显大多都会报错.因为生成的payload过大,而tomcat在默认情况下,接收的最大http头部大小为8192.如果超过这个大小,则to ...
- HotSpot的类模型(2)
在前一篇文章 HotSpot的二分模型中已经讲过,HotSpot采用了OOP-Klass模型描述Java的类和对象.Klass模型采用Klass类及相关子类来表示具体的Java类,可以理解这些类为Ja ...
- 状压DP之互不侵犯
题目描述 这里 在\(N*N\) 的棋盘里面放\(k\)个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 输入格式 只有 ...