Mysql To Charts(三)--读写Mysql

原已实现从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;

你可能感兴趣的:(mysql,jira)