code: def compile(self):
          
          params = self.column_params + self.join_params + self.params
          if self.limit and self.limit >= 0:
              self.sql_limit = 'LIMIT ?'
              params += [self.limit]
          return (self.sql, params, self.keys)
docs: Compile SQL and return 3-tuple ``(sql, params, keys)``.
  
          Example usage::
  
              (sql, params, keys) = sc.compile()
              for row in cursor.execute(sql, params):
                  record = dict(zip(keys, row))