Python tornado用40行代码搭建数据库交互网页实现快速全栈开发方式
Python tornado用40行代码搭建数据库交互网页实现快速全栈开发
作为数据分析师,我们大部分时间做的事情都是搭建线下Excel报表,这既有优点也有缺点
优点
- 开发效率
快速建模,最快十分钟就可以建模 - 数据传播
便于传播,发文件就是发模型 - 交互友好
对使用者门槛低,便于修改
缺点
- 版本控制
文件副本太多,极难做版本控制。经常有人找我修改模型却发现我已经更新了,只是没有给他最新版本 - 平台限制
无法跨平台,Mac不能用,WPS不能用,Excel2010及以下版本不能用 - 静态数据
更新数据有门槛,必须Windows系统,需要Excel2013及以上版本,还需要数据库账号密码,还需要IE9及以上浏览器,如果是早期Excel2016版本,还需要修改ReturnSingleDatabase
语句 - 数据量小
基本上一个Excel模型,在目前主流Windows电脑上存放1万数据就开始卡,10万数据要刷新很久,100万基本上非i7不能刷新和使用了
基于以上这些问题,我开始转向前端网页开发,在研究了Flask
,Django
和Tornado
之后,选择了简单快速的Tornado
,就是下面这个:
快速开发Python Web
1. 文件结构
先准备一个文件夹,例如取名python_web
,文件结构如下
python_web |-- templates | |-- index.html |-- main.py
或者看截图
2. index.html代码
- index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <div> <form method='post' target='/'> <input type='date' title='开始日期' name='begindate'> <input type='date' title='结束日期' name='enddate'> <input type='submit' title='点击运行' value='运行'> </form> </div> <div> <table> <thead> <tr> {% for c in col %} <th>{{c}}</th> {% end %} </tr> </thead> <tbody> {% for i in data %} <tr> {% for x in i %} <td>{{x}}</td> {% end %} </tr> {% end %} </tbody> </table> </div> </body> </html>
35行代码,很简单的一个网页
- 3-5行,为了让网页支持中文
- 7-13行,条件设置部分
这里面有两个要传入py的变量,用name
属性进行了标记,分别是变量begindate
,变量enddate
- 14-33行,表格数据部分
这里是根据上面的条件,传入py数据的两个变量,一个是表格标题变量col
,一个是表格数据变量data
3. main.py代码
- main.py
# -*- coding: utf-8 -*- import os.path import pymysql import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web from tornado.options import define,options define('port',default=1111,help='run on the given port',type=int) # 这里主要是定义端口 col = ['标题1','标题2','标题3','标题4'] # 传入网页的标题列表 config = {'host':'123.123.123.123','user':'dan','passwd':'dan','port':3306,'db':'dan'} # 数据库配置信息 class IndexHandler(tornado.web.RequestHandler): def get(self): # 进入网页时触发 self.render('index.html',col=col,data=(('',))) # 渲染网页,传入参数 def post(self): # 点击按钮时触发 begindate = self.get_argument('begindate') # 接收网页传来的参数1 enddate = self.get_argument('enddate') # 接收网页传来的参数2 # 下面是数据库配置,连接,运行,关闭 db = pymysql.connect(host=config['host'],user=config['user'],passwd=config['passwd'],port=config['port'],db=config['db']) cs = db.cursor() cs.execute("select * from dan where everyday between '%s' and '%s'" % (begindate,enddate)) data = cs.fetchall() cs.close() db.close() self.render('index.html',col=col,data=data) # 渲染网页,传入参数 if __name__=='__main__': tornado.options.parse_command_line() app = tornado.web.Application( handlers=[(r'/',IndexHandler)], # 将地址绑定到类 template_path=os.path.join(os.path.dirname(__file__),'templates')) # 指明网页文件夹 http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.instance().start()
40行代码,主要分两部分
- IndexHandler
点击网页触发get
或post
方法时调用该部分 - tornado
服务器配置,开启服务器
4. 参数传递流程图
网页跑起来是这样的
选择日期,点击运行,就会出数据。这操作比Excel切片器就简单多了,而且背后有海量的数据库数据支撑,可以说是海量数据了
至于ip,Windows需要进入cmd输入ipconfig
查看,Mac需要进入Terminal输入ifconfig
查看(Mac的真是难找💢)
知识点
前后端 | 知识点 |
---|---|
前端 | html |
后端 | python pymysql模块 python tornado模块 |
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
python使用xlrd与xlwt对excel的读写和格式设定
最近在用python处理excel表的时候出现了一些问题,所以想着记录下最后的实现方式和问题解决方法。方便自己或者大家在有需要的时候参考借鉴,下面这篇文章主要就介绍了python使用xlrd与xlwt对excel的读写和格式设定的相关资料,一起来学习学习吧。2017-01-01在Python中Dataframe通过print输出多行时显示省略号的实例
今天小编就为大家分享一篇在Python中Dataframe通过print输出多行时显示省略号的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-12-12
最新评论