您好,登錄后才能下訂單哦!
一. 前言
先說下主要的框架和主要的圖形庫的特點:(個人見解)
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/ 查看結果
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。