Search code examples
djangodjango-rest-frameworkdjango-migrationsdjango-databasedjango-datatable

How to give database name in runtime and migrate all changes to it


How to migrate changes in a database who's name is user defined. i tried giving

data = request.data
cursor = connection.cursor()
cursor.execute("create database " + data["database"])
DATABASES["default"]["NAME"] = data["database"]
call_command("makemigrations")
call_command("migrate")

but this doesn't work. is there any way to do it?


Solution

  • DATABASES.update({'users1': {
                    'ENGINE': 'django.db.backends.mysql',
                    'NAME': data["database"],
                    'USER': 'root',
                    'PASSWORD': 'root',
                    'HOST': 'localhost',
                    'PORT': '3306',
                    'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0,
                    'OPTIONS': {}, 'TIME_ZONE': None,
                    'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None
                }
                }})
                call_command("makemigrations")
                call_command('migrate', database='users1', interactive=False, skip_checks=True)
    

    This code worked for me