Пример #1
0
    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)
Пример #2
0
 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))