2014-01-25 4 views
1

Я хочу создать сайт, на котором пользователи могут входить в систему и создавать свою собственную базу данных (а также иметь возможность манипулировать ими). Эти базы данных будут очень маленькими и будут использоваться для тестирования в основном. Чтение на suggestedsolutions hereon SO, кажется, у меня есть несколько вариантов:динамические базы данных, созданные пользователями - django

  • динамически добавлять базы данных в settings.py, используя заранее определенные функции (как это было предложено here). Я считаю, что это очень плохая идея, так как она кажется взломанной и предоставляет собственный файл settings.py.
  • хранить файлы SQlite на носителе и подключаться к ним с помощью django.db.connections. Это кажется разумным решением, хотя я понятия не имею, как его выполнить.
  • не используют фактическую базу данных, кроме XML или какого-либо другого формата для хранения информации, которая, вероятно, обойдется мне в эффективности
  • моя собственная идея, которая может быть сумасшедшей глупостью - хранить файлы SQlite в виде блоков в базе данных MySQL.

Конечная цель - предоставить пользователям возможность создавать модели django на веб-сайте, а затем выполнять запросы на них (это учебный веб-сайт). Есть идеи?

+0

Как насчет другой вариант, просто создать новый проект Django для каждого пользователя с его собственной virtualenv и собственной базы данных SQLite, так что вы имеете полное разделение? – Wolph

+0

Это неплохая идея. Если вы можете развернуть это с помощью некоторого псевдокода, я мог бы отметить его как ответ – yuvi

ответ

3

Чуть больше псевдокоде, используя ткань :)

from fabric import api 

def django_start_project(project_name): 
    api.run('mkproject %s' % project_name) # Assumes you have virtualenvwrapper 
    with api.prefix('workon %s' % project_name): 
     api.run('pip install django') 
     api.run('django-admin.py startproject') 

Последняя часть нуждается в некоторой работы, конечно, но это суть :)

Вызывается, как это:

fab django_start_project:your_project 

Зависимости:

+0

Я никогда не слышал о ткани раньше. Невероятный. Мне все еще нужно найти способ создания виртуального, хотя, верно? Я не могу использовать для этого материал (или я могу?) – yuvi

+0

Пример выше уже создает virtualenv, если вы устанавливаете и настраиваете virtualenv и virtualenvwrapper. 'Mkproject' - это команда virtualenvwrapper, которая создает новый каталог в вашем' PROJECT_HOME' и virtualenv в вашем 'WORKON_HOME'. Документы: http://virtualenvwrapper.readthedocs.org/ru/latest/command_ref.html#command-mkproject – Wolph

+0

Ох. Я предположил, что вы имели в виду это буквально - virtualenv, который служит оберткой, я не знал, что на самом деле есть модуль python с этим именем, Хех. Фантастично, я погружусь прямо в него – yuvi

Смежные вопросы