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即可.
随机推荐
- ES6躬行记 笔记
ES6躬行记(18)--迭代器 要实现以下接口## next() ,return,throw 可以用for-of保证迭代对象的正确性 例如 var str = "向
- 策略模式、策略模式与Spring的碰撞
策略模式是GoF23种设计模式中比较简单的了,也是常用的设计模式之一,今天我们就来看看策略模式. 实际案例 我工作第三年的时候,重构旅游路线的机票查询模块,旅游路线分为四种情况: 如果A地-B地往返都 ...
- css modules是什么?
什么是CSS Modules? 官方的介绍是: 所有的 class 的名称和动画的名称默认属于本地作用域的 CSS 文件.所以 CSS Modules 不是一个官方的规范,也不是浏览器的一种机制,它是 ...
- 带大家认识CSS层叠上下文/层叠等级的区别和意义
什么是“层叠上下文” 层叠上下文(stacking context),是HTML中一个三维的概念.在CSS2.1规范中,每个盒模型的位置是三维的,分别是平面画布上的X轴,Y轴以及表示层叠的Z轴.一般情 ...
- pycharm连接远程服务器(拉取版本)
pycharm连接远程服务器(拉取版本) 有这篇教程是因为,博主有两个办公地点,想着在办公地点A上传代码到服务器并调试,并在B时候可以拉取这份代码,并进行调试.因此有这篇拉取版本的博客,之前还有上传版 ...
- 基于 React 开发了一个 Markdown 文档站点生成工具
Create React Doc 是一个使用 React 的 markdown 文档站点生成工具.就像 create-react-app 一样,开发者可以使用 Create React Doc 来开发 ...
- POJ1328贪心
题意:如今我们位于沿海地区,需要安装大炮,使得火力可以覆盖整个区域.海岸线可以视为是无限长的直线.陆地位于海岸线的一侧,海洋位于另一侧.海洋里有若干个岛屿,每个小岛可以视为海洋中的一个点.我们需要在海 ...
- Django---进阶13
目录 数据库表创建及同步 注册功能 登陆功能 bbs是一个前后端不分离的全栈项目,前端和后端都需要我们自己一步步的完成 表创建及同步 注册功能 forms组件 用户头像前端实时展示 ajax 登陆功能 ...
- [JAVA]解决不同浏览器下载附件的中文名乱码问题
附件下载时,遇到中文附件名的兼容性问题,firefox.chrome.ie三个派系不兼容,通过分析整理,总结出处理该问题的办法,记录如下: 1.文件名编码 服务器默认使用的是ISO8859-1,而我们 ...
- day80 前端项目
目录 一.初始化项目 二.安装路由vue-router 1 配置路由 1.1 初始化路由对象 1.2 注册路由信息 1.3 在视图中显示路由对应的内容 2 路由对象提供的操作 2.1 页面跳转 2.2 ...