python读取日志,存入mysql的代码教程

1、下载 1万条日志记录,保存为一个文件,读取文件并解析日志,从日志中提取ip, time_local, http_method, url, http_status, body_bytes_sent , http_referer, ua字段,以制表符分割。

在mysql中创建表,将刚才解析后的结果存入mysql表中。

2、在mysql中,使用sql查询出现次数最多的ip,以及该ip的访问次数。 这里写代码片

file_data

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 # coding:utf-8 # ip, time_local, http_method, url, http_status, body_bytes_sent , http_referer, ua import re   data_all = {} data_ev = {}   print("开始提取。。。") with open("access_parts.log") as f:     count = 1     for line in f.readlines():         line = line.strip('\n')         line = re.split("\s|-", line)         # print(line)         data_ev["ip"] = line[0]         data_ev["time_local"] = line[5].split('[')[1]         data_ev["http_method"] = line[7].split('"')[1]         data_ev["url"] = line[8]         data_ev["http_status"] = line[9]         if line[10] == '-':             data_ev["body_bytes_sent"] = 0         else:             data_ev["body_bytes_sent"] = line[10]         data_ev["http_referer"] = line[11].split('"')         data_ev["ua"] = ' '.join(line[12:23]).split('"')         if data_ev["http_method"] == 'GET':             data_ev["ua"] = data_ev["ua"][3]         else:             data_ev["ua"] = data_ev["ua"][1] + data_ev["ua"][3]         print(data_ev)         data_all[count] = data_ev         # print("已完成"+count+"行。。。")         count += 1

database

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 # coding:utf-8 from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from file_data import data_all   BaseModel = declarative_base() print("开始连接数据库。。。") DB_CONNECT = 'mysql+pymysql://root:123456@localhost:3306/test' engine = create_engine(DB_CONNECT, echo=True) DB_Session = sessionmaker(bind=engine) session = DB_Session() print("连接成功。。。")   class Access(BaseModel):     print("111")     __tablename__ = 'data'     id = Column(Integer(), primary_key=True)     ip = Column(String(50))     time_local = Column(String(50))     http_method = Column(String(50))     http_status = Column(String(50))     body_bytes_sent = Column(String(50))     http_referer = Column(String(50))     ua = Column(String(500))   def init_db():     BaseModel.metadata.create_all(engine) def drop_db():     BaseModel.metadata.drop_all(engine)   drop_db() init_db()

main

1 2 3 4 5 6 7 8 9 10 11 12 # 数据处理 # coding:utf-8 from file_data import data_all from database import Access from database import session   for k,v in data_all.items():   print("开始插入。。。")   access_ = Access(ip=v["ip"], time_local=v["time_local"], http_method=v["http_method"],  http_status=v["http_status"], body_bytes_sent=v["body_bytes_sent"],  http_referer=v["http_referer"], ua=v["ua"])   session.add(access_)   session.commit()   print("插入成功。。。")
上一篇:tools:context=".MainActivity的作用


下一篇:js-事件1_阻止事件冒泡_弹框菜单