一. 前言

先说下主要的框架和主要的图形库的特点:(个人见解)

Django:python开发的一个重量级的web框架,集成了MVC和ORM等技术,设计之初是为了使开发复杂的、数据库驱动的网站变得简单,然而由于种种原因很少有企业用来开发大型网站,而是拿来做运维开发的很多。其注重组件的重用性和“可插拔性”。

Flask:python开发的一个轻量级的web框架,它使用简单的核心,用 extension 增加其他功能,扩增的弹性很好,并且上手比较容易。

Echars:百度开源的一个图像库,界面可以做的很炫,但是主要是基于JS的,Django、flask对其的支持并不是很好,尤其是后台用python处理数据展现到前台很复杂。

Highchars:一个用纯JavaScript编写的一个图表库,兼容性也比较好,可以跨平台。但是其数据需要转成json格式才可以展现,对于需要后台通过python处理的数据来说也是一个不小的负担。Django、Flask对其的支持也不是很好。

Pygal:一个 Python 开发的动态 SVG 图表库,功能可能没有Echars或者Highchars强大,但是胜在它是一个python开发的库,采用的是python的原生语法,使用起来很方便,不需要多么复杂的转换。并且flask对其的支持很好,相对来说Django对pygal的支持就差点。

数据库选择了sqlite3,一个轻量级的关系型数据库。因为数据都是经过统计后的数据,数据量小,并且不需要特别复杂的操作。

综上所述,经过各种尝试之后,确定了Flask+pygal+sqlite3的架构。

二.环境准备

1.安装Python

1). Python版本:

3.4.3 :注意安装过程中选择把python添加到环境变量

2). 说明

建议选择高版本的Python,因为后面的两个库需要使用python自带的pip工具安装,否则直接下载库的安 装包的话容易安 装失败,主要是版本的                   对应问题和依赖库的缺少问题。

2.安装Flask框架

在命令行模式下执行:

pip install Flask

3.安装图形库

在命令行模式下执行:

pip install pygal

4.安装ORM映射库

在命令行模式下执行:

pip install flask-sqlalchemy

5.下载sqlite3数据库

直接在官网下载:http://www.sqlite.org/download.html

选择:sqlite-tools-win32-x86-3170000.zip

解压后包含三个可执行文件

三 、平台搭建过程

1.创建数据库

1)在命令行模式下,切换到sqlite3目录下,执行下面命令:

sqlite3.exe dzj.db

2)之后进入sqlite3命令行模式:

          create table appinfo(
id integer key autoincrement,
year varchar(32),
month varchar(32),
cnt varchar(32));

3)字段说明(主键是必须设置的)

Year 年份

Month 月份

Cnt 许可证数量

4)插入数据

2.搭建平台过程

1)创建项目文件目录(dzj)

2)在项目文件目录(dzj)下创建static文件夹和templates文件夹

3)把创建的dzj.db数据库复制到当前目录下(dzj目录)

4)在项目文件目录(dzj)下添加dzj.py 文件(注意要和项目同名),并添加以下代码:

from flask import Flask, render_template
import pygal
from dbconnect import db
from models import Appinfo
app = Flask(__name__) @app.route('/')
def APPLYTBLINFO():
db.create_all() #在第一次调用时执行就可以
appinfos = Appinfo.query.all()
##选择年份
list_year = []
##选择月份
list_month = []
##月份对应的数字
map_cnt = {}
for info in appinfos:
if info.year not in list_year:
list_year.append(info.year)
map_cnt[info.year] = [int(info.cnt)]
else:
map_cnt[info.year].append(int(info.cnt))
if info.month not in list_month:
list_month.append(info.month)
line_chart = pygal.Line()
line_chart.title = '信息'
line_chart.x_labels = map(str, list_month)
for year in list_year :
line_chart.add(str(year)+"年", map_cnt[year])
return render_template('index.html', chart=line_chart)
if __name__ == '__main__':
app.run(debug=True)

5)在项目文件目录(dzj)下添加dbconnect.py文件,代码如下:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os
app = Flask(__name__)
dbpath = app.root_path.replace("\\", "/")
#注意斜线的方向
app.config['SQLALCHEMY_DATABASE_URI'] = r'sqlite:///'+dbpath+'/dzj.db'
#app.config['SQLALCHEMY_DATABASE_URI'] = r'sqlite:///D:/Python/dzj/dzj.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
#print(app.config['SQLALCHEMY_DATABASE_URI'])
db = SQLAlchemy(app)

6)在项目文件目录(dzj)下添加models.py 文件,代码如下:

from dbconnect import db

##许可证申请数量
class Appinfo(db.Model):
__tablename__='appinfo' ##注意这句,网上有些实例上并没有
##必须设置主键
id = db.Column(db.Integer, primary_key=True)
year = db.Column(db.String(20))
month = db.Column(db.String(20))
cnt = db.Column(db.String(20)) def __init__(self, year, month, cnt):
self.year = year
self.month = month
self.cnt = cnt def __str__(self):
return self.year+":"+self.month+":"+self.cnt def __repr__(self):
return self.year+":"+self.month+":"+self.cnt def save(self):
db.session.add(self)
db.session.commit()

7)在templates文件下添加index.html,代码如下:

<body style="width: 1000px;margin: auto">
<div id="container">
<div id="header" style="background: burlywood;height: 50px;">
<h2 style="font-size: 30px; position: absolute; margin-top: 10px;margin-left: 300px;
text-align:center;">数据走势图分析</h2>
</div>
<div id="leftbar" style="width: 200px;height: 600px;background: cadetblue;float: left">
<h2 style="margin-left: 20px">数据图总览</h2><br/>
<table>
<tr>
<td>
<a name="appinfo" href="appinfo.html" style="margin-left: 20px;">数量分析图</a><br>
</td>
</tr>
</table>
</div>
<div id="chart" style="width: 800px;float: left">
<embed type="image/svg+xml" src= {{ chart.render_data_uri()|safe }} />
</div>
</div>
</body>

8)在命令行下切换到dzj所在目录,执行:

python dzj.py

如下图没有报错,即说明运行成功:

9)在浏览器输入:http://127.0.0.1:5000/ 查看结果

flask框架+pygal+sqlit3搭建图形化业务数据分析平台的更多相关文章

  1. 【转】使用Apache Kylin搭建企业级开源大数据分析平台

    http://www.thebigdata.cn/JieJueFangAn/30143.html 本篇文章整理自史少锋4月23日在『1024大数据技术峰会』上的分享实录:使用Apache Kylin搭 ...

  2. Liunx之KVM搭建图形化的WEB

    作者:邓聪聪 我们常在Windowns下使用VMware,当然在Liunx中也有这样的软件供我们使用.生产环境的KVM宿主机越来越多,需要对宿主机的状态进行调控.这里用webvirtmgr进行管理.图 ...

  3. 使用Apache Kylin搭建企业级开源大数据分析平台

    转:http://www.thebigdata.cn/JieJueFangAn/30143.html 我先做一个简单介绍我叫史少锋,我曾经在IBM.eBay做过大数据.云架构的开发,现在是Kylige ...

  4. VSCode + PYQT5 搭建图形化界面

    1,安装依赖 pip install -i https://mirrors.aliyun.com/pypi/simple/ PyQt5 pip install -i https://mirrors.a ...

  5. flask 框架快速入门

    flask 框架快速入门 搭建一个简易flask项目 首先使用 Pycharm创建flask项目 运行flask项目 1.使用Pycharm搭建flask项目 (如果Pycharm新建项目中未出现该图 ...

  6. DL4J实战之六:图形化展示训练过程

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是<DL4J实战>系列的第六 ...

  7. 基于SOA的组件化业务基础平台[转]

    转自https://www.ibm.com/developerworks/cn/webservices/1111_xiaojg_soa/index.html 业务基础平台是业务逻辑和基础架构平台之间的 ...

  8. 基于 SOA 的组件化业务基础平台

    业务基础平台是业务逻辑应用和基础架构平台之间的一个中间层,解决 “应用软件的业务描述和操作系统平台.软件基础架构平台之间的交互与管理问题”.操作系统平台解决了“应用软件系统与硬件之间的交互与管理问题” ...

  9. Flask框架搭建一个日程表

    目录 前言 项目介绍 技术栈 Flask Web开发流程 一.搭建环境 1.1: 创建虚拟环境 1.2: 安装依赖包 1.3: 创建依赖包列表文件 1.4: 测试hello word 二.应用程序开发 ...

随机推荐

  1. mysql常用语法

    创建表 create table <表名>( <字段名>  类型(长度) not null primary key auto_increment, **主键 name char ...

  2. Padding Borders Outlines Margins

    简介: 在20世纪90年代,许多网页布局是使用table,使用table最主要的原因是因为可以放text到一个盒子里,但是这是一个比较复杂的过程,现在可以使用比较简单的方法,那就是css. 元素盒子: ...

  3. 做一款直播类app

    ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijk ...

  4. Omi命令行界面omi-cli发布

    原文链接:https://github.com/AlloyTeam/omi/blob/master/docs/deep_in/cn_omi-cli.md 写在前面 通常认为,命令行界面(CLI)没有图 ...

  5. Redis安装以及基本数据类型

    安装 1.阿里云CentOS 1.进入到centos系统,输入wget http://download.redis.io/releases/redis-3.2.8.tar.gz ,下载好目前最新版的R ...

  6. ARZhu的数论初步

    数论 2017年3月4日02:11:35 gcd 1. 原理: gcd( a, b ) = gcd( b, a - b ) -> gcd( a, b ) = gcd( b, b % a ) 2. ...

  7. Unity Shader 知识点总结(一)

    在学习了一段时间的Unity Shader后,打算写一些知识总结,便于今后的查找.如有错误,希望大家指出更改. 本文参照的unity入门精要一书,做一个知识归纳,如有兴趣可以看看其开源的部分,是一本比 ...

  8. JS日期加减指定天数

    JS中没有直接操作日期加减的方法,只能通过Date对象获取当前天数加减之后setDate,以此来达到操作日期的目的 JS中对指定日期加减指定天数,具体方法如下: function addDate(da ...

  9. 20170305Meetup Git、heroku drop db

    Rails中,给link_to添加上action和class样式,内部文本 <%= link_to product_path(product),{ :controller => 'cont ...

  10. Hibernate二级缓存原理

    缓存:缓存是什么,解决什么问题? 位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为缓存Cache.缓存目的:让数据更接近于应用程序,协调速度不匹配,使访问速度更快 ...