python FLASK+SQLSERVER+ECHARTS 实践

python FLASK+SQLSERVER+ECHARTS 实践

目的是做一个报表,之前考虑直接用python,后面考虑到需要共享以及及时查看,所以考虑WEB。

要求不是特别高,就使用FLASK框架,轻量级,简单使用很快就能上手。

开发环境pycharm

直接用pycharm新建一个flask项目,不用去安装flask相关包。

python FLASK+SQLSERVER+ECHARTS 实践

flask 目录

python FLASK+SQLSERVER+ECHARTS 实践

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 实践

上一篇:gdb调试


下一篇:MySQL数据库之设计与编写规范