从数据库读取特定日期数据然后进行分析并画图展示之一---从数据库中读出特定日期的告警-1

前面日志我们完成了每日告警数据存储到数据库中,然后记录下完成存储的告警日期。本次开始我们从数据库取出告警数据然后进行分析并画图展示,共分三篇,如下图:


图片1.png

今天是第一篇,从数据库中读出特定日期的告警并存储在CSV文件中:

  1. 主要包括两个函数,一个是读数据库的read_db,另一个是写csv文件的write_csv;
  2. 思路就是用sql的select语句按照日期取出要分析的告警,放入一个rows,然后调用wirte_csv,循环rows,将每一个row按行写入csv文件即可。

代码很短,注释也比较清晰,欢迎大拿指正,共同进步。

# -*- encoding=UTF-8 -*-
__author__ = 'wjj1982'
__date__ = '2019/8/27 13:27'
__product__ = 'PyCharm'
__filename__ = '从数据库中读出特定日期的告警'

import sqlite3
import csv


def write_csv(filename, rows):
    # filename是最终存储的csv文件
    wf = open(filename, 'w', newline='')
    writer = csv.writer(wf)
    header = ('告警日期', '网元北向标识', '网元', '告警码名称', '发生时间', '告警原因', '位置')
    writer.writerows([header])
    for row in rows:
        writer.writerows([row])


def read_db(db_name, db_table_name):
    # 连接数据库
    conn = sqlite3.connect(db_name)
    # 游标对象
    cursor = conn.cursor()
    # # 查询数据库中表里的所有数据,取8月5日的告警
    # cursor = conn.cursor("SELECT * from {} WHERE 告警日期='2019-08-05'".format(db_table_name))
    # 查询数据库中表里的所有数据,取8月5日到8月7日的告警
    cursor = cursor.execute("SELECT * from {} WHERE 告警日期 between '2019-08-26' and '2019-09-07'".format(db_table_name))
    # 通过游标执行数据库查找命令,并查找所有符合条件的行
    rows = cursor.fetchall()
    # 最后关闭游标关闭数据库连接
    cursor.close()
    conn.close()
    return rows


def main():
    """将数据库中特定时间的行取出并写入csv文件"""
    # 定义变量
    db_name = 'E:\python\python-code\数据库操作\每日当前告警写入数据库\current_FM_chengdian.db'
    db_table_name = 'FMTable'
    filename = '数据存储表0909.csv'

    # 读取数据库
    rows = read_db(db_name, db_table_name)

    # 存储数据到csv文件中
    write_csv(filename, rows)


if __name__ == '__main__':
    main()

结果如下图:


画图2.png

你可能感兴趣的:(从数据库读取特定日期数据然后进行分析并画图展示之一---从数据库中读出特定日期的告警-1)