

def run_migrations(args, options, executor_codename, schema_name, allow_atomic=True):
    from django.core.management import color
    from django.core.management.base import OutputWrapper
    from django.db import connection
    style = color.color_style()

    def style_func(msg):
        return ('[%s:%s] %s' % (style.NOTICE(executor_codename), style.NOTICE(schema_name), msg))
    connection.set_schema(schema_name)
    stdout = OutputWrapper(sys.stdout)
    stdout.style_func = style_func
    stderr = OutputWrapper(sys.stderr)
    stderr.style_func = style_func
    if (int(options.get('verbosity', 1)) >= 1):
        stdout.write(style.NOTICE('=== Starting migration'))
    MigrateCommand(stdout=stdout, stderr=stderr).execute(*args, **options)
    try:
        transaction.commit()
        connection.close()
        connection.connection = None
    except transaction.TransactionManagementError:
        if (not allow_atomic):
            raise
        pass
    connection.set_schema_to_public()

dataset/ETHPy150Open tomturner/django-tenants/django_tenants/migration_executors/base.py run_migrations/original