
目的是做一个报表,之前考虑直接用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
python FLASK+SQLSERVER+ECHARTS 实践
原文:https://blog.51cto.com/u_13466287/2829795