def insert(self, auto_commit=True, **data):
        relational_data = data

        relational_data_columns = ''
        relational_data_values = ''

        if relational_data:
            relational_data_columns = ",".join(relational_data.keys())
            data_list = map(str, map(to_nullable_string, relational_data.values()))
            relational_data_values = ",".join(data_list)

        self.cursor.execute(self.__SQL_INSERT, (AsIs(self.name),
                                                AsIs(relational_data_columns),
                                                AsIs(relational_data_values)))

        if auto_commit:
            self.commit()

        return self.cursor.fetchone()[DEFAULT_ROW_IDENTIFIER]