Python tornado用40行代码搭建数据库交互网页实现快速全栈开发

作为数据分析师,我们大部分时间做的事情都是搭建线下Excel报表,这既有优点也有缺点

优点是:

  • 开发效率
    快速建模,最快十分钟就可以建模
  • 数据传播
    便于传播,发文件就是发模型
  • 交互友好
    对使用者门槛低,便于修改

缺点也有:

  • 版本控制
    文件副本太多,极难做版本控制.经常有人找我修改模型却发现我已经更新了,只是没有给他最新版本
  • 平台限制
    无法跨平台,Mac不能用,WPS不能用,Excel2010及以下版本不能用
  • 静态数据
    更新数据有门槛,必须Windows系统,需要Excel2013及以上版本,还需要数据库账号密码,还需要IE9及以上浏览器,如果是早期Excel2016版本,还需要修改ReturnSingleDatabase语句
  • 数据量小
    基本上一个Excel模型,在目前主流Windows电脑上存放1万数据就开始卡,10万数据要刷新很久,100万基本上非i7不能刷新和使用了

基于以上这些问题,我开始转向前端网页开发,在研究了Flask,DjangoTornado之后,选择了简单快速的Tornado,就是下面这个

在这里插入图片描述


快速开发Python Web

1. 文件结构

先准备一个文件夹,例如取名python_web,文件结构如下

python_web
    |— templates
    |    |— index.html
    |— main.py

或者看截图


python_web


2. index.html代码

index.html



    
        # -*- 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
    点击网页触发getpost方法时调用该部分
  • tornado
    服务器配置,开启服务器


4. 参数传递流程图

流程图


网页跑起来是这样的


在这里插入图片描述

选择日期,点击运行,就会出数据.这操作比Excel切片器就简单多了,而且背后有海量的数据库数据支撑,可以说是海量数据了

至于ip,Windows需要进入cmd输入ipconfig查看,Mac需要进入Terminal输入ifconfig查看(Mac的真是难找)


知识点

前后端 知识点
前端 html
后端 python pymysql模块
python tornado模块


参考资料

  1. Tornado Documentation

你可能感兴趣的:(Python tornado用40行代码搭建数据库交互网页实现快速全栈开发)