@classmethod
    def migrate(self):

        check = self.migration_required()
        if check == False:
            print("%s has already been migrated, skip it!" % self)
            return None

        print("Migrating %s" % self)

        self.check_migration() # check the configuration of the Migration
        connection = self.open_db_connection()

        cursor = connection.cursor()
        cursor.execute(self.query)
        fields = [ row[0] for row in cursor.description ]

        if check is None:
            # update existing migrations
            self.process_cursor_for_update(connection, cursor, fields)

        else:
            # do the normal migration method
            self.process_cursor(connection, cursor, fields)

            AppliedMigration.objects.create(classname=str(self))
method that is called to migrate this migration
dataset/ETHPy150Open pboehm/django-data-migration/data_migration/migration.py/Migration.migrate