美文网首页有梦才会去努力
python-从数据库中取出存储的告警信息

python-从数据库中取出存储的告警信息

作者: 余生还长你别慌 | 来源:发表于2019-08-27 21:47 被阅读0次

前面我们将每天的告警存进了数据库,那下一步就是取出数据进行分析了。今天我们尝试取出数据。一种是取某日的数据,一种是取某几天的数据。

  1. 用到csv,sqlite3模块,csv用于取出的数据写入csv文件,sqlite3用于数据库连接以及取数据;
  2. 两个函数,write_csv功能是写入csv文件,read_db是从数据库读数据
  3. main函数就是引用上面的两个函数。

过程很简单,注意的点,就是select命令格式,以及writerows跟的参数是列表为宜。

# -*- 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-05' and '2019-08-07'".format(db_table_name))
    # 通过游标执行数据库查找命令,并查找所有符合条件的行
    rows = cursor.fetchall()
    # 最后关闭游标关闭数据库连接
    cursor.close()
    conn.close()
    return rows


def main():
    """将数据库中特定时间的行取出并写入csv文件"""
    # 定义变量
    db_name = 'current_FM_chengdian.db'
    db_table_name = 'FMTable'
    filename = '数据存储表.csv'

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

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


if __name__ == '__main__':
    main()

相关文章

网友评论

    本文标题:python-从数据库中取出存储的告警信息

    本文链接:https://www.haomeiwen.com/subject/emgyectx.html