Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- # coding: utf8
- #
- import string, sys, os, re
- import pymssql
- import hashlib
- path_read = "PbxCollect01.log"
- y = 2012 # начальный год. выяснен эмпиричеким путем
- bs = 0 # условие для увеличения года
- d={} # словарь для данных
- # подготовка базы sqlite
- con = pymssql.connect("192.168.7.42", "sa", "sa", "pbx")
- cur = con.cursor()
- #cur.execute("IF OBJECT_ID('pbx', 'U') IS NOT NULL DROP TABLE pbx")
- #cur.execute('CREATE TABLE pbx (id VARCHAR(34) NOT NULL PRIMARY KEY, year VARCHAR(5), month VARCHAR(3), day VARCHAR (3), phone VARCHAR(5), number VARCHAR(50), t_begin TIME, t_count TIME)')
- #con.commit()
- with open(path_read) as f:
- regex = re.compile(r'1.* O .*') # выделяем только исходящие звонки
- for i in re.finditer(regex, f.read()):
- Line = i.group().strip()
- L = Line.split()
- if len(L) > 9: # если произошло слияние двух строк в логе, отбрасываем
- continue
- if L[7] == "0.00": # если нету набранного номера, отбрасываем
- continue
- if L[5] == "00:00:00": # если длительность звонка нулевая, отбрасываем
- continue
- L1 = L[5].split(':')
- if L1[0] == "23": # исключаем звонки с ошибочной длительностью в 23 часа
- continue
- L2 = L[3].split('/')
- # основная логика разбивки по месяцам и годам
- if L2[0] == "01" and bs == 0:
- y = y + 1
- bs = 1
- if L2[0] == "12":
- bs = 0
- L = Line.split()
- A = L[3].split('/')
- lines = Line.replace(L[3],A[0] + ' ' + A[1] + ' ' + str(y)) # добавили в данные год, разделили пробелами, объединили в строку
- _,phone,_,month,day,year,t_begin,t_count,_,number,_ = lines.split() # заполняем переменные из строки
- pbxs = year + month + day + phone + number + t_begin + t_count
- hashs = hashlib.md5(pbxs).hexdigest()
- pbx = ((hashs, year, month, day, phone, number, t_begin, t_count))
- # print pbx
- cur.execute('SELECT id FROM pbx WHERE id=%s',hashs)
- if cur.fetchall() == []:
- cur.execute("INSERT INTO pbx (id, year, month, day, phone, number, t_begin, t_count) VALUES(%s, %s, %s, %s, %s, %s, convert(time,%s), convert(time,%s))", pbx)
- con.commit()
- con.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement