用户创建的动态数据库 - django
Posted
技术标签:
【中文标题】用户创建的动态数据库 - django【英文标题】:dynamic databases created by users - django 【发布时间】:2014-02-16 10:13:13 【问题描述】:我想创建一个网站,用户可以在其中登录并创建自己的数据库(并且还可以操作它们)。这些数据库将非常小,主要用于测试。阅读suggestedsolutions hereon SO看来我有几个选择:
使用预定义的功能(建议here)将数据库动态添加到settings.py。我发现这是一个非常糟糕的主意,因为它看起来像一个 hack 并且暴露了你自己的 settings.py 文件。 将 SQlite 文件存储在媒体中,并使用 django.db.connections 连接到它们。这似乎是一个合理的解决方案,虽然我不知道如何执行它。 不要使用实际的数据库,而是使用 XML 或其他格式来存储信息,这可能会降低我的效率 我自己的想法,这可能是疯狂的愚蠢 - 将 SQlite 文件作为 blob 存储在 mysql 数据库中。最终目标是允许用户在网站上创建 django 模型,然后对它们执行查询(这是一个学习网站)。有任何想法吗?
【问题讨论】:
另一种选择怎么样,只需为每个用户创建一个新的 Django 项目,使用它自己的 virtualenv 和自己的 sqlite 数据库,这样你就可以完全分离? 这不是一个坏主意。如果你可以用一些伪代码来扩展它,即使我可能会将它标记为答案 【参考方案1】:略多于伪代码,使用织物 :)
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
依赖关系:
面料:http://docs.fabfile.org/ 虚拟环境:http://www.virtualenv.org/ 虚拟环境包装器:http://virtualenvwrapper.readthedocs.org/【讨论】:
我以前从未听说过织物。极好的。我仍然需要找到一种方法来创建 virtualenv,对吧?我不能为此使用织物(或者我可以吗?) 如果您安装并设置了 virtualenv 和 virtualenvwrapper,上面的示例已经创建了 virtualenv。mkproject
是一个 virtualenvwrapper 命令,它在 PROJECT_HOME
中创建一个新目录,在 WORKON_HOME
中创建一个 virtualenv。文档:virtualenvwrapper.readthedocs.org/en/latest/…
哦。我以为你的意思是字面意思 - 一个用作包装器的 virtualenv,我不知道实际上有一个具有该名称的 python 模块,呵呵。太棒了,我会直接进入它以上是关于用户创建的动态数据库 - django的主要内容,如果未能解决你的问题,请参考以下文章