<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_fact_by_id(self, fact_id):
 """ Obtains fact data by it's id. As the fact is unique, it returns a tuple like: (activity_id, start_time, end_time, description). If there is no fact with id == fact_id, a NoHamsterData exception will be raise """


        columns = 'activity_id, start_time, end_time, description'

        query = "SELECT %s FROM facts WHERE id = %s"
        result = self._query(query % (columns, fact_id))

        if result:
            return result[0]  # there only one fact with the id
        else:
            raise NoHamsterData('facts', fact_id)