Python Flask 中用 SQLAlchemy 访问 Mysql 数据库
2016-08-15 15:51
603 查看
里面用到了Mysql 里专有 DATE_FORMAT 函数来格式化日期,前端用 FusionCharts 来显示数据
def search_keydata():
tab_name = request.args.get('tab_name', '', type=str)#获取选项卡名
units = request.args.get('units', '', type=str)#获取统计单位
data_contrast = request.args.get('data_contrast', '', type=str)#获取数据对比标示符
apply_item = request.args.get('apply_item', '', type=str)#获取项目名称
datetime_start = request.args.get('datetime_start', '', type=str)#获取起始日期
datetime_end = request.args.get('datetime_end', '', type=str)#获取统计终止日期
#Python中还原JavaScript的escape函数编码后字符串
units = "".join([(len(i)>0 and unichr(int(i,16)) or "") for i in units.split('%u')])
if units == u'日':
search_date_fromat = '%Y-%m-%d'
elif units == u'月':
search_date_fromat = '%Y-%m'
else:
search_date_fromat = '%Y'
if datetime_start == '' or '-01':
datetime_start = '1000-1-1'
if tab_name == 'A':
apply_item = "".join([(len(i)>0 and unichr(int(i,16)) or "") for i in apply_item.split('%u')])
if apply_item == '':
search_data = db.session.query(func.DATE_FORMAT(ApplyRecord.applystarttime,search_date_fromat),\
func.COUNT(ApplyRecord.purpsoe))\
.filter(ApplyRecord.applystarttime >= datetime_start)\
.filter(ApplyRecord.applystarttime <= datetime_end)\
.group_by(func.DATE_FORMAT(ApplyRecord.applystarttime,search_date_fromat)).all()
result_data = [{"label":data[0],"value":data[1]}
for data in search_data]
else:
if data_contrast == 'N':
search_data = db.session.query(func.DATE_FORMAT(ApplyRecord.applystarttime,search_date_fromat),\
func.COUNT(ApplyRecord.purpsoe))\
.filter(ApplyRecord.applystarttime >= datetime_start)\
.filter(ApplyRecord.applystarttime <= datetime_end)\
.filter(ApplyRecord.applyperson == apply_item)\
.group_by(func.DATE_FORMAT(ApplyRecord.applystarttime,search_date_fromat)).all()
result_data = [{"label":data[0],"value":data[1]}
for data in search_data]
else:
search_data = db.session.query(func.DATE_FORMAT(ApplyRecord.applystarttime,search_date_fromat),\
func.COUNT(ApplyRecord.purpsoe),\
func.SUM(case([(ApplyRecord.applyperson==apply_item,'1')])))\
.filter(ApplyRecord.applystarttime >= datetime_start)\
.filter(ApplyRecord.applystarttime <= datetime_end)\
.group_by(func.DATE_FORMAT(ApplyRecord.applystarttime,search_date_fromat)).all()
search_data_arr_T = (array(search_data)).T
search_date = search_data_arr_T[0].tolist()
data_sum_num = search_data_arr_T[1].tolist()
data_single_user_num = search_data_arr_T[2].tolist()
data_sum_num = [0 if data == None else data for data in data_sum_num]
data_single_user_num = [0 if data == None else data for data in data_single_user_num]
category_dict_list = [{"label":data}
for data in search_date]
data_sum_num_dict_list = [{"value":data}
for data in data_sum_num]
data_single_user_num_dict_list = [{"value":data}
for data in data_single_user_num]
result_data = []
result_data.append(category_dict_list)
result_data.append(data_sum_num_dict_list)
result_data.append(data_single_user_num_dict_list)
else:
if apply_item == '':
saearch_first = db.session.query(func.DATE_FORMAT(ApplyNum.applydate,search_date_fromat).label("d"),\
(func.SUM(ApplyNum.applynum)/func.COUNT(func.SUBSTRING_INDEX(ApplyNum.purpose,'(',1))).label("n"))\
.filter(ApplyNum.applydate >= datetime_start)\
.filter(ApplyNum.applydate <= datetime_end)\
.group_by(func.SUBSTRING_INDEX(ApplyNum.purpose,'(',1)).subquery()
search_data = db.session.query(saearch_first.c.d,\
func.SUM(saearch_first.c.n))\
.group_by(saearch_first.c.d).all()
else:
saearch_first = db.session.query(func.DATE_FORMAT(ApplyNum.applydate,search_date_fromat).label("d"),\
(func.SUM(ApplyNum.applynum)/func.COUNT(func.SUBSTRING_INDEX(ApplyNum.purpose,'(',1))).label("n"))\
.filter(ApplyNum.modeltype == apply_item)\
.filter(ApplyNum.applydate >= datetime_start)\
.filter(ApplyNum.applydate <= datetime_end)\
.group_by(func.SUBSTRING_INDEX(ApplyNum.purpose,'(',1)).subquery()
search_data = db.session.query(saearch_first.c.d,\
func.SUM(saearch_first.c.n))\
.group_by(saearch_first.c.d).all()
# search_data = db.session.query(func.DATE_FORMAT(ApplyNum.applystarttime,search_date_fromat),\
# func.SUM(ApplyNum.applynum))\
# .func.COUTN(func.DISTINCT(func.SUBSTRING_INDEX(ApplyNum.purpsoe,'(',1)))\
# .filter(ApplyNum.applystarttime >= datetime_start)\
# .filter(ApplyNum.applystarttime <= datetime_end)\
# .group_by(func.DATE_FORMAT(ApplyNum.applystarttime,search_date_fromat)).all()
result_data = [{"label":data[0],"value":float(data[1])}
for data in search_data]
result_data = json.dumps({'search_data':result_data})
return result_data
def search_keydata():
tab_name = request.args.get('tab_name', '', type=str)#获取选项卡名
units = request.args.get('units', '', type=str)#获取统计单位
data_contrast = request.args.get('data_contrast', '', type=str)#获取数据对比标示符
apply_item = request.args.get('apply_item', '', type=str)#获取项目名称
datetime_start = request.args.get('datetime_start', '', type=str)#获取起始日期
datetime_end = request.args.get('datetime_end', '', type=str)#获取统计终止日期
#Python中还原JavaScript的escape函数编码后字符串
units = "".join([(len(i)>0 and unichr(int(i,16)) or "") for i in units.split('%u')])
if units == u'日':
search_date_fromat = '%Y-%m-%d'
elif units == u'月':
search_date_fromat = '%Y-%m'
else:
search_date_fromat = '%Y'
if datetime_start == '' or '-01':
datetime_start = '1000-1-1'
if tab_name == 'A':
apply_item = "".join([(len(i)>0 and unichr(int(i,16)) or "") for i in apply_item.split('%u')])
if apply_item == '':
search_data = db.session.query(func.DATE_FORMAT(ApplyRecord.applystarttime,search_date_fromat),\
func.COUNT(ApplyRecord.purpsoe))\
.filter(ApplyRecord.applystarttime >= datetime_start)\
.filter(ApplyRecord.applystarttime <= datetime_end)\
.group_by(func.DATE_FORMAT(ApplyRecord.applystarttime,search_date_fromat)).all()
result_data = [{"label":data[0],"value":data[1]}
for data in search_data]
else:
if data_contrast == 'N':
search_data = db.session.query(func.DATE_FORMAT(ApplyRecord.applystarttime,search_date_fromat),\
func.COUNT(ApplyRecord.purpsoe))\
.filter(ApplyRecord.applystarttime >= datetime_start)\
.filter(ApplyRecord.applystarttime <= datetime_end)\
.filter(ApplyRecord.applyperson == apply_item)\
.group_by(func.DATE_FORMAT(ApplyRecord.applystarttime,search_date_fromat)).all()
result_data = [{"label":data[0],"value":data[1]}
for data in search_data]
else:
search_data = db.session.query(func.DATE_FORMAT(ApplyRecord.applystarttime,search_date_fromat),\
func.COUNT(ApplyRecord.purpsoe),\
func.SUM(case([(ApplyRecord.applyperson==apply_item,'1')])))\
.filter(ApplyRecord.applystarttime >= datetime_start)\
.filter(ApplyRecord.applystarttime <= datetime_end)\
.group_by(func.DATE_FORMAT(ApplyRecord.applystarttime,search_date_fromat)).all()
search_data_arr_T = (array(search_data)).T
search_date = search_data_arr_T[0].tolist()
data_sum_num = search_data_arr_T[1].tolist()
data_single_user_num = search_data_arr_T[2].tolist()
data_sum_num = [0 if data == None else data for data in data_sum_num]
data_single_user_num = [0 if data == None else data for data in data_single_user_num]
category_dict_list = [{"label":data}
for data in search_date]
data_sum_num_dict_list = [{"value":data}
for data in data_sum_num]
data_single_user_num_dict_list = [{"value":data}
for data in data_single_user_num]
result_data = []
result_data.append(category_dict_list)
result_data.append(data_sum_num_dict_list)
result_data.append(data_single_user_num_dict_list)
else:
if apply_item == '':
saearch_first = db.session.query(func.DATE_FORMAT(ApplyNum.applydate,search_date_fromat).label("d"),\
(func.SUM(ApplyNum.applynum)/func.COUNT(func.SUBSTRING_INDEX(ApplyNum.purpose,'(',1))).label("n"))\
.filter(ApplyNum.applydate >= datetime_start)\
.filter(ApplyNum.applydate <= datetime_end)\
.group_by(func.SUBSTRING_INDEX(ApplyNum.purpose,'(',1)).subquery()
search_data = db.session.query(saearch_first.c.d,\
func.SUM(saearch_first.c.n))\
.group_by(saearch_first.c.d).all()
else:
saearch_first = db.session.query(func.DATE_FORMAT(ApplyNum.applydate,search_date_fromat).label("d"),\
(func.SUM(ApplyNum.applynum)/func.COUNT(func.SUBSTRING_INDEX(ApplyNum.purpose,'(',1))).label("n"))\
.filter(ApplyNum.modeltype == apply_item)\
.filter(ApplyNum.applydate >= datetime_start)\
.filter(ApplyNum.applydate <= datetime_end)\
.group_by(func.SUBSTRING_INDEX(ApplyNum.purpose,'(',1)).subquery()
search_data = db.session.query(saearch_first.c.d,\
func.SUM(saearch_first.c.n))\
.group_by(saearch_first.c.d).all()
# search_data = db.session.query(func.DATE_FORMAT(ApplyNum.applystarttime,search_date_fromat),\
# func.SUM(ApplyNum.applynum))\
# .func.COUTN(func.DISTINCT(func.SUBSTRING_INDEX(ApplyNum.purpsoe,'(',1)))\
# .filter(ApplyNum.applystarttime >= datetime_start)\
# .filter(ApplyNum.applystarttime <= datetime_end)\
# .group_by(func.DATE_FORMAT(ApplyNum.applystarttime,search_date_fromat)).all()
result_data = [{"label":data[0],"value":float(data[1])}
for data in search_data]
result_data = json.dumps({'search_data':result_data})
return result_data
相关文章推荐
- 采用python中SQLalchemy模块访问数据库(三)
- python3 基础模块(数据库文件模块dbm、shelve、pickle,django,mysql,ORM框架——SQLAlchemy)
- 20170310 - Python 3 下 SQLAlchemy 的 MySQL 数据库 URI 配置
- [python] linux安装mysql,设置mysql允许外网访问,并使用sqlalchemy在python中调用
- MySQL-python中间件的安装及Flask_SQLAlchemy的学习
- python+MySQL访问数据库
- Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
- 今天看到可以用sqlalchemy在python上访问Mysql
- python数据库操作之pymysql模块和sqlalchemy模块(项目必备)
- 采用python中SQLalchemy模块访问数据库
- 采用python中SQLalchemy模块访问数据库(一)
- Python数据库访问之SQLite3、Mysql
- flask框架:Python 3.5下使用 flask_SqlAlchemy和mysql
- 关于用python的SQLAlchemy访问数据库的学习记录,及SQLAlchemy的安装简介
- Python-Flask数据库的使用(MySQL)
- Python数据库访问之SQLite3、Mysql
- Shell、Perl、Python、PHP访问 MySQL 数据库代码实例
- python 访问数据库 SQLAlchemy中的Query方法
- Python安装数据库SqlServer\MySql访问组件
- python Flask-SQLAlchemy 连接数据库