作为数据分析师,我们大部分时间做的事情都是搭建线下Excel报表,这既有优点也有缺点
优点是:
缺点也有:
ReturnSingleDatabase
语句基于以上这些问题,我开始转向前端网页开发,在研究了Flask
,Django
和Tornado
之后,选择了简单快速的Tornado
,就是下面这个
先准备一个文件夹,例如取名python_web
,文件结构如下
python_web
|-- templates
| |-- index.html
|-- main.py
index.html
代码index.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行代码,很简单的一个网页
name
属性进行了标记,分别是变量begindate
,变量enddate
col
,一个是表格数据变量data
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行代码,主要分两部分
get
或post
方法时调用该部分网页跑起来是这样的
选择日期,点击运行,就会出数据.这操作比Excel切片器就简单多了,而且背后有海量的数据库数据支撑,可以说是海量数据了
至于ip,Windows需要进入cmd输入ipconfig
查看,Mac需要进入Terminal输入ifconfig
查看(Mac的真是难找)
前后端 | 知识点 |
---|---|
前端 | html |
后端 | python pymysql模块 python tornado模块 |