Guest User

Untitled

a guest
Dec 6th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.41 KB | None | 0 0
  1. from datetime import datetime, date, time, timedelta
  2. import datetime
  3. import mysql.connector
  4. import pandas as p
  5.  
  6.  
  7. class Report(object):
  8.  
  9. _body_text = None
  10. _filename = None
  11. _columns = None
  12. _query = None
  13.  
  14. def __init__(self):
  15. pass
  16.  
  17. def append_body_text(self, value):
  18. existing_text = str(self._body_text)
  19. self._body_text = existing_text + value
  20.  
  21. @staticmethod
  22. def connect_to_database(user, password, database, host, port):
  23. connection = mysql.connector.connect(user=user, password=password, db=database, host=host, port=port)
  24. return connection
  25.  
  26. @staticmethod
  27. def create_string_from_column(serial):
  28. created_list = serial.tolist()
  29. string = ', '.join(map(str, created_list))
  30. return string
  31.  
  32. @staticmethod
  33. def generate_midnight():
  34. midnight = datetime.datetime.combine(date.today(), time.min)
  35. return midnight
  36.  
  37. @staticmethod
  38. def generate_date_today():
  39. today = datetime.date.strftime(datetime.date.today(), "%Y-%m-%d")
  40. return today
  41.  
  42. def generate_date_today_midnight(self):
  43. midnight = self.generate_midnight()
  44. midnight = midnight.strftime("%Y-%m-%d")
  45. return midnight
  46.  
  47. def generate_date_today_midnight_timestamp(self):
  48. midnight = self.generate_midnight()
  49. beginning_of_unix_epoch = datetime.datetime(1970, 1, 1)
  50. midnight_timestamp = midnight - beginning_of_unix_epoch
  51. return midnight_timestamp
  52.  
  53. def generate_date_yesterday_midnight(self):
  54. midnight = self.generate_midnight()
  55. yesterday = datetime.timedelta(days=1)
  56. yesterday_midnight = midnight - yesterday
  57. return yesterday_midnight
  58.  
  59. def generate_date_yesterday_midnight_timestamp(self):
  60. yesterday_midnight = self.generate_date_yesterday_midnight()
  61. yesterday_midnight_timestamp = (yesterday_midnight - datetime.datetime(1970, 1, 1)).total_seconds()
  62. return yesterday_midnight_timestamp
  63.  
  64. @staticmethod
  65. def generate_yesterday_literal_timestamp():
  66. yesterday_literal_timestamp = ((datetime.datetime.now() - datetime.timedelta(days=1)) -
  67. datetime.datetime(1970, 1, 1)).total_seconds()
  68. return yesterday_literal_timestamp
  69.  
  70. def get_data(self, connection):
  71. cursor = connection.cursor()
  72. cursor.execute(self._query)
  73. results = cursor.fetchall()
  74. data = p.DataFrame(data=results, columns=self._columns)
  75. connection.close()
  76. return data
  77.  
  78. @staticmethod
  79. def insert_variables_into_sql_statement(query, external_data):
  80. final_query = query % external_data
  81. return final_query
  82.  
  83. def write_to_csv(self, data_frame, directory):
  84. data_frame.to_csv(directory + self._filename, sep=',', index=False)
  85.  
  86. def generate_report(self, connection, directory, *args):
  87. data = self.get_data(connection)
  88. self.write_to_csv(data, directory)
  89. connection.close()
  90.  
  91. from Report import Report
  92. from datetime import datetime
  93.  
  94.  
  95. class AccessLogsReport(Report):
  96.  
  97. def __init__(self, database, timestamp):
  98. super(Report, self).__init__()
  99.  
  100. self._database = database
  101. self._timestamp = datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S")
  102. beginning_of_unix_epoch = datetime(1970, 1, 1)
  103. self._unix_timestamp = int((self._timestamp - beginning_of_unix_epoch).total_seconds())
  104.  
  105. query_template = """
  106. SELECT
  107. *,
  108. FROM_UNIXTIME(Time)
  109. FROM {db}.AccessLog as a
  110. WHERE a.Time > {time};
  111. """
  112.  
  113. self._query = query_template.format(db=self._database, time=self._unix_timestamp)
  114. self._columns = ['ID', 'Device_ID', 'Status_ID', 'Unix_Time', 'Number_Events', 'Time']
  115. today = self.generate_date_today()
  116. self._filename = 'access_logs_beginning_' + today + '.csv'
  117. self.append_body_text("* Access Logs Reportn")
  118.  
  119. import mysql.connector
  120. import pandas as p
  121.  
  122.  
  123. class TestThing():
  124. def __init__(self):
  125. pass
  126.  
  127. def eat_shoes(self):
  128. self._query = """
  129. SELECT
  130. *,
  131. FROM_UNIXTIME(Time)
  132. FROM server2.AccessLog as a
  133. WHERE a.Time > 1512507870;
  134. """
  135. self._columns = ['ID', 'Device_ID', 'Status_ID', 'Time', 'Number_Events', 'MachineTime']
  136. usr = 'user'
  137. pswd = 'password'
  138. dbase = 'Database2'
  139. hst = '127.0.0.1'
  140. prt = 13307
  141. connection = mysql.connector.connect(user=usr, password=pswd, db=dbase, host=hst, port=prt)
  142. cursor = connection.cursor()
  143. cursor.execute(self._query)
  144. results = cursor.fetchall()
  145. data = p.DataFrame(data=results, columns=self._columns)
  146. connection.close()
  147. return data
Add Comment
Please, Sign In to add comment