前面我们将每天的告警存进了数据库,那下一步就是取出数据进行分析了。今天我们尝试取出数据。一种是取某日的数据,一种是取某几天的数据。
- 用到csv,sqlite3模块,csv用于取出的数据写入csv文件,sqlite3用于数据库连接以及取数据;
- 两个函数,write_csv功能是写入csv文件,read_db是从数据库读数据
- 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()
网友评论