Mysql To Charts(三)--读写Mysql

来源:互联网 发布:网络博客大全 编辑:程序博客网 时间:2024/06/04 17:54

原已实现从Jira平台抓取数据,并写人数据库中
因数据的直观性和可对比性,现需将数据绘制成曲线图的形式

计划将各个项目分别以Week为单位绘制新增bug数、关闭bug数以及遗留bug数的曲线图

写入Mysql

在Jira平台数据自动化获取中,我们已实现了从Jira平台中抓取数据并写入Mysql中,但在实现的时候,是以当前时间Now为名称创建数据表格,现需要把每周的数据都写入在一个表格中,故增加一个“周”的表头,数据类型为INT

对于对应的日期,需要判断该日期的星期数
1. 通过分割字符串,获取输入日期的年、月、日的值
2. 判断是否为闰年,定义二月份的天数
3. 根据获取到的月份数,求和得到该日期在一年中的天数
4. 求得该日期的星期数
实现代码如下:

/**输入日期,获得星期数参数:Dateinput  日期,如:"2016-3-24"*/function theWeek(Dateinput) {    arr = Dateinput.split('-');    //必须转为数字类型    var intyears = parseInt(arr[0]);    var intmouths = parseInt(arr[1]);    var intdays = parseInt(arr[2]);    var totalDays = 0;    if (intyears < 1000)        intyears += 1900    var days = new Array(12);    days[0] = 31;    days[2] = 31;    days[3] = 30;    days[4] = 31;    days[5] = 30;    days[6] = 31;    days[7] = 31;    days[8] = 30;    days[9] = 31;    days[10] = 30;    days[11] = 31;//判断是否为闰年,针对2月的天数进行计算    if (Math.round(intyears / 4) == intyears / 4) {        days[1] = 29    } else {        days[1] = 28    }    if (intmouths == 1) {        totalDays = totalDays + intdays;    } else {        for (var count = 1; count < intmouths; count++) {            totalDays = totalDays + days[count - 1];        }        totalDays = totalDays + intdays;    }    //得到第几周    var week = Math.round(totalDays / 7);    console.log("the week is "+week);    return week;}theWeek("2016-3-24");

运行后输出结果为:

the week is 12

数据库表格

如下:
这里写图片描述

数据表格:
这里写图片描述

读取Mysql

创建读取数据库的jiraMysqlQuery.js文件
1.创建数据库连接

    var connection = mysql.createConnection({        //主机        host: 'localhost',        //用户名        user: 'root',        //密码        password: '123456',        //端口号        port: '3306'    });

2.读取数据库对应表格的数据

    connection.query('USE nodejs_mysql_test');    connection.query('select id', function (err, data) {            callback(err, data);        });

由于需要读取的是2016project表格中的项目名称、新增bug数、遗留bug数、关闭bug数、周等数据

    connection.query('USE nodejs_mysql_test');    connection.query('select id,项目名称,新增bug数,遗留bug数,关闭bug数,周 from 2016project where 项目名称 = "SeewoLink" ;', function (err, data) {            callback(err, data);            connection.destroy();        });
  1. 表头为“新增bug数”等为汉字字符,故需要“新增bug数 as newBugsNumber”转换
  2. 在获取数据时,需要将“周”这项数据从低到高排列,故创建数据时创建INT类型数据,在SQL语句中,使用order by 周 ASC 来实现升序排列
    读取数据库后,
  3. 需要将数据库关闭连接
  4. 需要不断去调用读取数据库的函数,故将读取的函数封装并将值抛出

    实现的代码如下:

var mysql = require('mysql');var checkProjectBugNumber = function(projectName, callback) {    var connection = mysql.createConnection({        //主机        host: 'localhost',        //用户名        user: 'root',        //密码        password: '123456',        //端口号        port: '3306'    });    connection.query('USE nodejs_mysql_test');    connection.query('select id, 项目名称 as name, 新增bug数 as newBugsNumber, 遗留bug数 as remainBugsNumber,'        + ' 关闭bug数 as closedBugsNumber, 周 as week from 2016project where 项目名称 = "' + projectName + '" '        + ' order by 周 ASC;', function (err, data) {            callback(err, data);            connection.destroy();        });};exports.checkProjectBugNumber = checkProjectBugNumber;
0 0
原创粉丝点击