我在Django项目中使用2个不同的数据库:
1)'默认'是PostgreSQL 2)“分析”是Azure SQL数据库
我还使用Django-Tenants允许多租户方法。
现在,第二个数据库应该仅具有特殊的分析数据库表,而核心应用程序在第一个数据库上运行。
settings.py:
DATABASES = {
'default': {
'ENGINE': 'tenant_schemas.postgresql_backend',
'NAME': 'xxx',
'USER': 'xxx',
'PASSWORD': 'xxx',
'HOST': 'localhost',
'PORT': '',
},
'analysis': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'xxx',
'USER': 'xxx',
'PASSWORD': 'xxx',
'HOST': 'xxx',
'PORT': 'xxx',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
'MARS_Connection': 'True',
}
}
}
DATABASE_ROUTERS = (
'apps.power_bi.routers.AnalysisRouter',
'tenant_schemas.routers.TenantSyncRouter',
)
由于特定的Django应用程序具有分析功能,因此我配置了以下路由器:
class AnalysisRouter:
def db_for_read(self, model, **hints):
if model._meta.app_label == 'analysis':
return 'analysis'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == 'analysis':
return 'analysis'
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label == 'analysis':
return db == 'analysis'
return None
我希望在migrate schema
命令期间,analysis
应用程序将与第二个数据库analysis
同步,相反,所有应用程序都将根据其模型定义来创建表。
我在这里想念什么?