Select the passed +attributes+ from the table, subject to the
        restrictions provided by the other methods in this class.

        ex)

        >>> Repo("foos").select("name", "id")
        SELECT foos.name, foos.id FROM foos

def select(self, *attributes):
        """
        Select the passed +attributes+ from the table, subject to the
        restrictions provided by the other methods in this class.

        ex)

        >>> Repo("foos").select("name", "id")
        SELECT foos.name, foos.id FROM foos
        """
        namespaced_attributes = [
            "{table}.{attr}".format(table=self.table_name, attr=attr)
            for attr in attributes
        ]
        cmd = ('select {attrs} from {table} '
               '{join_clause}{where_clause}{order_clause}'
               '{group_clause}{having_clause}{limit_clause}').format(
            table=self.table_name,
            attrs=", ".join(namespaced_attributes),
            where_clause=self.where_clause,
            join_clause=self.join_clause,
            order_clause=self.order_clause,
            group_clause=self.group_clause,
            having_clause=self.having_clause,
            limit_clause=self.limit_clause,
        ).rstrip()
        return Repo.db.execute(cmd, self.where_values + self.having_values + \
                               self.limit_value)