Я пытаюсь подключить мое приложение django к третьей базе данных, где мне нужно получить некоторые данные. Я буду использовать эту информацию только для чтения.
Я сделал эти конфигурации:
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'xxx',
'USER':'xxx',
'PASSWORD':'xxx',
'HOST':'xxx',
'PORT':'5432',
},
'histo':{
'ENGINE':'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR,'db.sqlite3'),
},
'redshift': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'xxx',
'USER':'xxx',
'PASSWORD':'xxx',
'HOST':'xxx',
'PORT':'5439',
}
}
DATABASE_ROUTERS = ['livedb.database_routers.redshiftrouter.Router']
И написал этот роутер:
redshiftrouter.py
class Router(object):
def db_for_read(self, model, **hints):
if model._meta.app_label == 'redshift':
return 'redshift'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == 'redshift':
return 'redshift'
return None
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == 'redshift' or \
obj2._meta.app_label == 'redshift':
return True
return None
def allow_migrate(self, db, app_label, model=None, **hints):
if app_label == 'redshift':
return False
return None
Моя проблема в том, что когда я бегу manage.py migrate --database=redshift
, у меня появляется
миграция, исключая исключение
Поскольку django_migrations.id имеет неподдерживаемый тип 'serial' .
Однако я подумал, что благодаря моему маршрутизатору я избежал перехода на эту базу данных.
Я читал, что другой пост был на ту же тему, но никто из них не дал ответа на этот вопрос.
Можете ли вы помочь мне с этой проблемой?
Спасибо