def GenericResultPrettyPrinter(self, ssbot, mtype, target, fail_only=False): """ This function will print any result nicely on screen with proper formatting """ ss = SSmessenger(ssbot, mtype, target) if fail_only: if self.error_msg: ss.send_message("Error: " + str(self.query.text)) ss.send_message("Error: " + str(self.error_msg)) elif self.rows is None or len(self.rows) == 0: if self.rows_affected: ss.send_message("RowsAffected: " + str(self.rows_affected)) if self.last_row_id: ss.send_message("InsertId: " + str(self.last_row_id)) if self.error_msg: ss.send_message("Error: " + str(self.error_msg)) else: ss.send_message("Query Successful: No Results") if self.messages: for m in self.messages: ss.send_message("Messages: " + str(m)) else: if not self.description: ss.send_message("#### NO RESULTS ###") else: names = [] lengths = [] for dd in self.description: # iterate over description names.append(dd[0]) # in case name is bigger then max len of data lengths.append(len(dd[0])) for row in self.rows: # get the max length of each column for i in range(len(row)): lengths[i] = max(lengths[i], len(str(row[i]))) tb = "-" * (sum(map(int, lengths)) + (len(lengths) * 3) + 1) fm = "|" for col in lengths: # make the format string fm += " %" + str(col) + "s |" ss.send_message(tb) ss.send_message((fm % tuple(names))) ss.send_message(tb) for row in self.rows: # output the rows ss.send_message((fm % row)) ss.send_message(tb)
def ResultGraphPrinter(self, res, ssbot, mtype, target): """ this function will print any result nicely on screen with proper formatting """ ss = SSmessenger(ssbot, mtype, target) if res.rows is None or len(res.rows) == 0: if res.error_msg: ss.send_message("Error: " + str(res.error_msg)) else: if not res.description: ss.send_message("#### NO RESULTS ###") else: min = 9999 max = 0 total = 0 count = 0 for row in res.rows: pop = row[2]+row[4]+row[6] if min > pop: min = pop if max < pop: max = pop total += pop count += 1 step = -7 data_points = 0 for i in range(140, 0, step): txt = "%-3.3i|" % (i, ) for row in res.rows: pop = row[2]+row[4]+row[6] if pop < i and pop >= (step+i): txt += "+" data_points += 1 else: txt += " " if i < min: break if data_points: ss.send_message(txt) ss.send_message("000|" + "-" * len(res.rows)) ss.send_message("Max:%3i Min:%3i Avg:%3.2f" % (max, min, total/count))