Джанго: динамически создать базу данных - PullRequest
0 голосов
/ 18 мая 2018

Я хотел бы реализовать веб-страницу в Django, которая позволяет пользователю динамически создавать базу данных.

Сохраненная модель Django всегда будет одинаковой.(универсальный пользователь)

Сценарий:

  1. Пользователь заполняет форму такими полями, как user.firstname, user.lastname ..
  2. Затем после отправки, django создает совершенно новую БД в СУБД.
  3. Затем модель сохраняется в этой новой БД.
  4. Django сохраняет / сохраняет эту настройку БД для дальнейшего использования.

Я узнаю Здесь , что в Django можно настроить несколько БД, но это означает, что они уже созданы (что, очевидно, не в моем случае).

Чтобы создать мойБД Я могу подумать о том, чтобы выполнить пользовательский запрос SQL непосредственно в СУБД, например,

from django.db import connection

def createNewDB(self,id):
    with connection.cursort() as cursor:
        queryStr = "\"CREATE DATABASE " + id + "\"" 
        cursor.execute(queryStr)

Но тогда у меня нет никаких подсказок о:

  • Как сохранить новыйНастройки БД в БД Django (см. Ниже).

  • Как перенести и сохранить пользователя модели в БД

    • Миграция: from django.core.management import call_command call_command("migrate", interactive=False)
    • Сохранить модель: user.save(using='db_id')

Я нахожу эту запись о том, как добавить динамическое соединениеcally с:

from django.db import connections
connections.databases['new-alias'] = { ... }
conn = connections['new-alias']

Но опять же, в этом случае база данных sqlite уже существовала, поэтому я не уверен, что это именно то, что мне нужно.

Итак, возможно ли создатьСсылка БД на модель, а затем добавить ее в настройку базы данных django?

Или я должен просмотреть всю свою структуру данных?(например, одна БД, но таблица с несколькими моделями пользователей)

Я использую django 2.0.5 и postgreSQL 9.6, но могу измениться, если решение несовместимо (например, sqlite).

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