def first(self, count=1):
        """
        Returns the first record in the query (sorting by id unless modified by
        `order_by`), returning None if the query has no records.
        """
        if count == 0:
            raise QueryInvalid("Count cannot be zero.")
        self.limit_count = count
        records = self._do_query().fetchall()
        if not records:
            return None
        if count == 1:
            record = records[0]
            args = dict(zip(self.attributes, record))
            return self.model.from_dict(**args)
        return self