Flask搭建图形化业务数据分析平台
点击上方
“
Python开发
”,选择“置顶公众号”
关键时刻,第一时间送达!
一. 前言
先说下主要的框架和主要的图形库的特点:(个人见解)
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
()
http
://
www
.
cnblogs
.
com
/在第一次调用时执行就可以
appinfos
=
Appinfo
.
query
.
all
()
http
://
www
.
cnblogs
.
com
/
http
://
www
.
cnblogs
.
com
/选择年份
list_year
=
[]
http
://
www
.
cnblogs
.
com
/
http
://
www
.
cnblogs
.
com
/选择月份
list_month
=
[]
http
://
www
.
cnblogs
.
com
/
http
://
www
.
cnblogs
.
com
/月份对应的数字
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
(
"\\"
,
"/"
)
http
://
www
.
cnblogs
.
com
/注意斜线的方向
app
.
config
[
"SQLALCHEMY_DATABASE_URI"
]
=
r
"sqlite:///"
+
dbpath
+
"/dzj.db"
http
://
www
.
cnblogs
.
com
/
app
.
config
[
"SQLALCHEMY_DATABASE_URI"
]
=
r
"sqlite:///D:/Python/dzj/dzj.db"
app
.
config
[
"SQLALCHEMY_TRACK_MODIFICATIONS"
]
=
True
http
://
www
.
cnblogs
.
com
/
(
app
.
config
[
"SQLALCHEMY_DATABASE_URI"
])
db
=
SQLAlchemy
(
app
)
6)在项目文件目录(dzj)下添加models.py 文件,代码如下:
from
dbconnect
import
db
http
://
www
.
cnblogs
.
com
/
http
://
www
.
cnblogs
.
com
/许可证申请数量
class
Appinfo
(
db
.
Model
):
__tablename__
=
"appinfo"
http
://
www
.
cnblogs
.
com
/
http
://
www
.
cnblogs
.
com
/注意这句,网上有些实例上并没有
http
://
www
.
cnblogs
.
com
/
http
://
www
.
cnblogs
.
com
/必须设置主键
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/ 查看结果
作者:lc19861217
原文:
http://www.cnblogs.com/lc1217/p/6514049.html
Python开发整理发布,转载请联系作者获得授权
【点击成为Java大神】
- 数据体系搭建 | 梳理架构和指标体系
- 搭建智慧旅游云智慧中心
- 方案|大型商场高清网络视频监控系统搭建方案详解
- Python技术贴 | 从Django、Flask、Tornado的部署说起
- 南亚亚泰美食城占道经营已整改 店外搭建篷子被取缔
- 六西格玛中图形分析的Minitab实现-张驰咨询
- 沙河积极搭建人力资源供需平台
- 如何搭建“我的世界”服务器 | Linux 中国
- 【微新闻】爱心超市搭建“暖心桥梁”
- 升哥学堂 | 绝代双骄技术图形的相关分析