将Django与现有的复杂数据库结合使用

时间:2016-10-20 21:26:48

标签: python sql django

在我的情况下,是否可以将Django与现有数据库,Microsoft SQL一起使用,这实际上是巨大而复杂的,另外Django不能以任何方式对其进行更改?

我已经阅读了this,但它似乎无法解决我的问题;它说manage.py migrate会向数据库中添加一些表,这些表不得发生。

我也发现这可能不起作用,因为它仍然需要在每个数据库上使用迁移: https://docs.djangoproject.com/en/1.10/topics/db/multi-db/

我的用户故事是:

  • 我想在浏览器中查看现有数据库中的客户数据(SQL select)
  • 我想写一篇访问报告(SQL插入)

除此之外,不得更改数据库。

Django有可能吗? Django甚至是这项工作的合适工具吗? 是否可以拥有一个Django特定的数据库和一个不同的数据库,只能从中选择/插入?

2 个答案:

答案 0 :(得分:3)

您可以使用另一个django数据库来保存其元数据。数据库路由器可以帮助您告诉Django在哪个数据库中保存哪些数据。[docs]

一个例子:

<强> Settings.py

class YourRouter(object): 
    def db_for_read(self, model, **hints):
        if model.__class__.__name__ in ['A', 'B']:
            return 'secondDB'
        return 'default'

    def db_for_write(self, model, **hints):
        if model.__class__.__name__ in ['A', 'B']:
            return 'secondDB'
        return 'default'        
    def allow_relation(self, obj1, obj2, **hints):
        return True

<强> router.py

inspectdb

要在您的访问报告表中写入,WHERE case ... end BETWEEN '11/1/16' AND '12/1/16' 管理命令可以通过基于您现有的数据库自动生成模型来帮助您。 [docs]

答案 1 :(得分:0)

Django将添加一些表来跟踪管理用户权限,会话,内容类型和模型迁移等各种事项。

如果您真的不希望对数据库进行任何更改,那么Django不适合您。