Insert data into the table.
        
        :Examples:
        
        >>> user_table.insert({'username': 'Jude'}) # Insert one row
        >>> user_table.insert([{'username': 'Andy'}, {'username': 'Julia'}, ...]) # Insert multiple rows

        :Parameters:

        - data_or_list_of_data: Either a dict or a list of dict

        :Return: id or list of ids of inserted row

def insert(self, data_or_list_of_data):
        """
        Insert data into the table.
        
        :Examples:
        
        >>> user_table.insert({'username': 'Jude'}) # Insert one row
        >>> user_table.insert([{'username': 'Andy'}, {'username': 'Julia'}, ...]) # Insert multiple rows

        :Parameters:

        - data_or_list_of_data: Either a dict or a list of dict

        :Return: id or list of ids of inserted row
        """
        result = None

        def insert_data(data):
            sql = build_insert(self.name, data)
            row_count = self.cursor.execute(sql)

            if row_count:
                return self.cursor.lastrowid
            else:
                return None

        value_to_be_inserted = []

        if isinstance(data_or_list_of_data, list):
            result = []
            for data in data_or_list_of_data:
                r = insert_data(data)
                result.append(r)
        else:
            result = insert_data(data_or_list_of_data)
        
        return result