Django:动态创建数据库

时间:2018-05-18 14:24:39

标签: python django postgresql

我想在Django中实现一个允许用户动态创建数据库的网页。

存储的Django模型将始终相同。 (普通用户)

场景:

  1. 用户填写表格,其中包含user.firstname,user.lastname ..等字段。
  2. 然后在提交后,django在DBMS上创建一个全新的数据库。
  3. 然后将模型存储在此新数据库中。
  4. Django保存/存储此数据库设置以供进一步使用。
  5. 我发现Here可以在Django中设置多个DB,但这意味着它们已经被创建(显然不是我的情况)。

    要创建我的数据库,我可以考虑直接在DBMS上执行自定义SQL查询

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

    但后来我没有任何线索:

    • 如何在Django DB中保存新的数据库设置(见下文)。

    • 如何在DB中迁移和保存模型用户

      • 迁移: from django.core.management import call_command call_command("migrate", interactive=False)
      • 保存模型:user.save(using='db_id')

    我发现这个post谈论如何动态添加连接:

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

    但同样在这种情况下,sqlite DB之前存在,所以我不确定它是否是我需要的。

    那么可以创建一个到模型的数据库链接,然后将其添加到django的数据库设置中吗?

    或者我应该查看我的所有数据结构? (如一个DB但多个用户模型表)

    我正在使用django 2.0.5和postgreSQL 9.6但是如果解决方案不兼容我可以改变(例如sqlite)。

0 个答案:

没有答案