如何以oracle为数据库在Django中建立多模式?

2024-04-25 05:40:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我的工作场所计划使用Python/Django作为后端框架,并在ASP classic的oracle数据库之上进行前端响应。因为我们的oracle数据库从公司一开始就有了结构,所以我们决定保持原样。在

据我所知,oracle中的模式通常是通过用户名/密码访问的,因此每个模式都需要有user/password才能访问,而我们的oracle数据库有大约30个ish模式,每个模式都包含许多表。在

另一方面,Django似乎一次只支持一个模式,基于安装在中的应用程序设置.py,这听起来好像数据库配置需要在中设置不同的用户/密码设置.py对于安装的每个应用程序。在

到目前为止,我已经在settings.py中尝试了class Meta和{}

    // class Meta
    class SomeModel(models.Model):
            ///some fields and data types...

            class Meta():
                    managed=False
                    db_table=u'"schema\".\"table"'

    // DATABASES
    DATABASES = {
          'default': {
                'ENGINE': 'django.db.backends.oracle',
                'NAME': 'multi_schema_db',
                'USER': 'django_user',
                'PASSWORD': 'secret',
          },

          'data': {
                'ENGINE': 'django.db.backends.oracle',
                'NAME': 'multi_schema_db',
                'USER': 'data_user',
                'PASSWORD': 'secret',
          },
    }

我的问题是,在django只安装了一个应用程序的情况下,有没有办法访问多个模式?在

请纠正我上面的任何误解。在


Tags: djangopy数据库应用程序密码dbdataschema
1条回答
网友
1楼 · 发布于 2024-04-25 05:40:57

You can have multiple schemas in Django

DATABASES = {
      'default': {
            'ENGINE': 'django.db.backends.oracle',
            'NAME': 'multi_schema_db_1',  # The name is the schema
            'USER': 'django_user',
            'PASSWORD': 'secret',
      },

      'data': {
            'ENGINE': 'django.db.backends.oracle',
            'NAME': 'multi_schema_db_2',  # The name is the schema
            'USER': 'data_user',
            'PASSWORD': 'secret',
      },
}

要使用特定模式,请使用.using()

^{pr2}$

如果某些模型只存在于一个模式中,则可以使用routers来定义为每个模型使用哪个数据库

class YourRouter:

    def db_for_read(self, model, **hints):
        return database_for_the_model

    def db_for_write(self, model, **hints):
        return database_for_the_model

相关问题 更多 >