今天开发需求:把某个日志里面的内容写入数据库存储,方便调阅。
日志类型,每天会生成一个,里面有6个字段:
第一个字段是时间,但是只有时分秒(xx:xx:xx)
第二个字段和第三个字段还有第五个字段只是个简单的数字id
第四个字段是名称
第六个字段是注释,写的比较多字段较长
日志每个字段有 | 符号隔开
接到需求后,首先决定用Python的split()函数做每列的切割
lists=('|')
每个字段直接用lists[0] , lists[1] lists[2] 就可以取出来了
然后使用pymysql模块连接数据库执行语句,首先是根据每个字段创建数据库
create table gtalog (time DATETIME,
id1 int,
id2 int,
names char(20),
id3 int,
remarks char(200));
创建好数据库之后开始读取日志
with open(logs, "r", encoding="utf-8") as f: ###打开日志文件
lines = () ###把日志里面分列提取
for line in lines:
log=('|') ###把提取出来的单列,用分隔符分开
date2 = ().date() ###获取数据库DATETIME时间的年月日 xxxx-xx-xx
log0=("%s %s" % (date2, log[0]))###因为数据库第一列是DATETIME类型,我们提取日志的第一列只有时分秒,所以拼接年月日
print(log0, log[1], log[1], log[1], log[1], log[1],) ###分别输出每个字段
现在每个字段都能提取出来,下一步只要连接数据库,用sql语句把字段写入数据库就完成了。
connent = (host='10.10.10.10', user='root', passwd='123456', db='logs', port=3306, charset='utf8') ##连接数据库
cursor = () ###创建游标
sql="insert into gtalog(time,id1,id2,names,id3,remarks) values" ###需要执行执行的sql语句
sql += " ('%s', %s, %s, '%s', %s, '%s');" % (log0,log[1],log[2],log[3],log[4],log[5]) ###拼接sql语句,因为有的字段插入的时候需要单引号,不然sql语句会报错
(sql)###执行sql语句
() ###提交事务,写入数据库
到这里整个流程就完成了,下面是完整的Python脚本:
import datetime import pymysql import time date1 = ('%Y%m%d') logs = ("/home/log/%" % (date1)) date2 = ().date() ###获取数据库DATETIME时间的年月日 xxxx-xx-xx def log_w(): #读取日志文件中,清洗的表名 with open(logs, "r", encoding="utf-8") as f: lines = () connent = (host='10.10.10.10', user='root', passwd='123456', db='logs', port=3306, charset='utf8') cursor = () for line in lines: aaa=('|') log0=("%s %s" % (date2, log[0])) sql="insert into gtalog(time,id1,id2,names,id3,remarks) values" sql += " ('%s', %s, %s, '%s', %s, '%s');" % (log0,log[1],log[2],log[3],log[4],log[5]) (sql) () if __name__ == '__main__': log_w()
这个脚本写的比较简单,很多地方还可以继续完善,大家可以根据自己的需求进行修改