
目的是做一个报表,之前考虑直接用python,后面考虑到需要共享以及及时查看,所以考虑WEB。
要求不是特别高,就使用FLASK框架,轻量级,简单使用很快就能上手。
开发环境pycharm
直接用pycharm新建一个flask项目,不用去安装flask相关包。

flask 目录

static 所有静态文件目录 templates HTML模板目录 app.py sqlserver_cn 自己写的连接sqlserver的包 里面的MyDB模块实现连接sqlserver的方法 避免每次调用要创建连接和游标
MyDB.py
import pymssql class MyDb: """以面向对象方式封装数据库和数据库连接""" server = '192.168.0.66' # 端口在init函数中直接1433初始化了,可以自己适当改变 database = 'AIS20190622100041' username = 'sa' password = '123456' cur = None def __init__(self): # 获取数据库连接和游标 self.conn = pymssql.connect(self.server, self.username, self.password, self.database) #服务器名,账户,密码,数据库名 self.cur = self.conn.cursor() def select_db(self, sql_code): # 查询sql数据 self.cur.execute(sql_code) return self.cur.fetchone() def __del__(self): # 对象销毁,断开连接 self.cur.close()
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个 ECharts 实例</title>
<!-- 引入 echarts.js -->
<script src="static/echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 1000px;height: 1000px">
</div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'), 'dark');
myChart.setOption({
tooltip: {
trigger: 'item'
},
title: {
text: "客户合同数TOP10",
x: 'center',
y: 'bottom',
},
series: [
{
name: '合同数量',
type: 'pie', // 设置图表类型为饼图
radius: '50%', // 饼图的半径,外半径为可视区尺寸(容器高宽中较小一项)的 55% 长度。
label: {normal: {show: true, position: 'outer', formatter: "{b}: {c}({d}%)"}},
data:{{ my_data|safe}}
}
]
})
</script>
</body>
</html>app.py
import json
from random import random
from gevent import pywsgi
from sqlserver_cn import MyDB
from flask import Flask, render_template
app = Flask(__name__)
# 路由
@app.route('/')
#处理函数
def hello_world():
sql = "select top 10 客户名,count(*) from 合同表 group by 客户名 order by count(*) desc"
mydb = MyDB.MyDb()
row = mydb.select_db(sql)
list = []
while row:
rs = {"value":row[1],"name":row[0]} # 输出结果
row = mydb.cur.fetchone()
list.append(rs)
myjson = json.dumps(list) #列表转成json
print(myjson)
# 返回值到模板文件,模板文件根据返回值返回界面给浏览器
return render_template('index.html',my_data =myjson)
if __name__ == '__main__':
server = pywsgi.WSGIServer(('0.0.0.0', 5000), app)
server.serve_forever()启动flask项目 --host=0.0.0.0 指定监听所有网卡,如果不指定只监听127.0.0.1 外网无法访问
python -m flask run --host=0.0.0.0
















