Как изменить схему базы данных Django в представлении? - PullRequest
1 голос
/ 28 сентября 2019

Как изменить схему базы данных из представления Django?

Я хочу, чтобы пользователь выбрал тип поля базы данных.

1 Ответ

0 голосов
/ 28 сентября 2019

Во-первых, settings.py должно выглядеть примерно так:

DATABASES = {
    'default': {
        'NAME': 'schema_name',
        'ENGINE': 'django.db.backends.postgresql',
        'USER': 'postgres',
        'PASSWORD': 'password'
    },
    'foo': {
        'NAME': 'schema_name',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'root',
        'PASSWORD': 'password'
    },
...
}

Теперь в своем коде вы можете вручную решить, какую схему / базу данных использовать с .usingМетод:

SomeModel.objects.using('foo').all() #this uses "foo"
SomeModel.objects.all() #this uses "default"

Для более сложной логики, вы можете создать маршрутизатор базы данных решить, какую схему использовать в данном сценарии.

Обновление

Вы можете выполнить необработанные запросы , импортировав connection.

Вот пример оператора create:

 from django.db import connection
 with connection.cursor() as cursor:
     sql = '''
     CREATE TABLE foo (
     col1 INT,
     col2 VARCHAR(45)
     )'''
     cursor.execute(sql)

При создании таблиц с использованиемпользовательский ввод.Небезопасное выполнение этого может привести к инъекции SQL и потенциально другим уязвимостям, таким как сохраненный xss .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...