python读取日志,存入mysql的代码教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python读取日志,存入mysql的代码教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3037字,纯文字阅读大概需要5分钟。
内容图文
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( "插入成功。。。" )
|
内容总结
以上是互联网集市为您收集整理的python读取日志,存入mysql的代码教程全部内容,希望文章能够帮你解决python读取日志,存入mysql的代码教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。