[英]How to set up multiple schema in django with oracle as a database?
我的工作场所计划使用Python / Django作为后端框架,并在ASP Classic的oracle db之上使用React。 由于我们的oracle数据库是从公司成立之初就开始构建的,因此我们决定保持原样。
据我了解,oracle中的模式通常是通过用户名/密码访问的,因此每个模式都需要具有用户名/密码才能进行访问,并且我们的oracle数据库具有大约30种模式,每个模式内部都包含许多表。
另一方面,Django似乎一次仅支持一个模式(基于settings.py中安装的应用程序),听起来数据库配置需要在每个应用程序的settings.py中设置不同的用户/密码安装。
到目前为止,我已经在settings.py
尝试了class Meta
和DATABASES
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仅安装了一个应用程序的情况下,是否有任何变通办法可以访问多个架构?
PS请纠正我在上面的任何误解。
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()
SomeModel.objects.using('data').all() # The default is to use the "default" database conection
如果某些模型仅处于一种模式中,则可以使用路由器定义每种模型要使用的数据库
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.