一. 前言

先說下主要的框架和主要的圖形庫的特點:(個人見解)
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_templateimport pygalfrom dbconnect import dbfrom 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 Flaskfrom flask_sqlalchemy import SQLAlchemyimport 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 ><div id="container">
<div id="header" >
<h3 style="font-size: 30px; position: absolute; margin-top: 10px;margin-left: 300px;
text-align:center;">數據走勢圖分析</h3>
</div>
<div id="leftbar" >
<h3 >數據圖總覽</h3><br/>
<table>
<tr>
<td>
<a name="appinfo" href="appinfo.html" >數量分析圖</a><br>
</td>
</tr>
</table>
</div>
<div id="chart" >
<embed type="p_w_picpath/svg+xml" src= {{ chart.render_data_uri()|safe }} />
</div></div></body>8)在命令行下切換到dzj所在目錄,執行:
python dzj.py
如下圖沒有報錯,即說明運行成功:
9)在瀏覽器輸入:http://127.0.0.1:5000/ 查看結果
另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章名稱:flask框架+pygal+sqlit3搭建圖形化業務數據分析平臺-創新互聯
URL分享:http://www.js-pz168.com/article26/dhdgcg.html
成都網站建設公司_創新互聯,為您提供網站收錄、企業網站制作、網站設計、網站建設、網站營銷、建站公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯