python - Django: how to use two different databases with Wagtail CMS -
inside django project, have 1 app, otherapp, hits postgres database on remote server contains scraped data. have second app, content, hits different postgres database on same remote server, , contains pages i'd have served through wagtail cms.
i installed wagtail locally using these instructions (i did not use wagtail installer). got working locally. then, did pg_dump of local database , did psql db2 < db2dumpfile.sql on remote database server.
each of apps works fine locally in isolation, can't them work together. thought use database router specify database want used retrieve different types of data.
but, when put database router settings file, starts fail. how can fix this? need declare wagtailcore somewhere else in project?
settings.py:
databases = { 'default': { 'engine': 'django.db.backends.postgresql_psycopg2', 'name': 'db1', 'user': db_username, 'password': db_password, 'host': host, 'port': port }, 'cms': { 'engine': 'django.db.backends.postgresql_psycopg2', 'name': 'db2', 'user': db_username, 'password': db_password, 'host': host, 'port': port } } database_routers = [ 'projectname.routers.findrouter',]
routers.py:
import os django.conf import settings import socket class findrouter(object): def db_for_read(self, model, **hints) : if model._meta.app_label == 'content' : return 'cms' return none def db_for_read(self, model, **hints): if model._meta.app_label == 'content' : return 'cms' return none def db_for_write(self, model, **hints): if model._meta.app_label == 'content' : return 'cms' return none def allow_relation(self, obj1, obj2, **hints): if obj1._meta.app_label == 'content' or obj2._meta.app_label == 'content': return true return none def allow_migrate(self, db, app_label, model=none, **hints): if app_label == 'content' : return db == 'cms' return none
this error getting when runserver:
environment: request method: request url: http://127.0.0.1:8000/cms/ django version: 1.9 python version: 2.7.10 installed applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'wagtail.wagtailforms', 'wagtail.wagtailredirects', 'wagtail.wagtailembeds', 'wagtail.wagtailsites', 'wagtail.wagtailusers', 'wagtail.wagtailsnippets', 'wagtail.wagtaildocs', 'wagtail.wagtailimages', 'wagtail.wagtailsearch', 'wagtail.wagtailadmin', 'wagtail.wagtailcore', 'modelcluster', 'compressor', 'taggit', 'otherapp', 'content'] installed middleware: ['django.middleware.security.securitymiddleware', 'django.contrib.sessions.middleware.sessionmiddleware', 'django.middleware.common.commonmiddleware', 'django.middleware.csrf.csrfviewmiddleware', 'django.contrib.auth.middleware.authenticationmiddleware', 'django.contrib.auth.middleware.sessionauthenticationmiddleware', 'django.contrib.messages.middleware.messagemiddleware', 'django.middleware.clickjacking.xframeoptionsmiddleware', 'django.middleware.security.securitymiddleware', 'wagtail.wagtailcore.middleware.sitemiddleware', 'wagtail.wagtailredirects.middleware.redirectmiddleware'] traceback: file "/users/username/.virtualenvs/bail/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 123. response = middleware_method(request) file "/users/username/.virtualenvs/bail/lib/python2.7/site-packages/wagtail/wagtailcore/middleware.py" in process_request 11. request.site = site.find_for_request(request) file "/users/username/.virtualenvs/bail/lib/python2.7/site-packages/wagtail/wagtailcore/models.py" in find_for_request 122. return site.objects.get(hostname=hostname) # site.doesnotexist here goes final except clause file "/users/username/.virtualenvs/bail/lib/python2.7/site-packages/django/db/models/manager.py" in manager_method 122. return getattr(self.get_queryset(), name)(*args, **kwargs) file "/users/username/.virtualenvs/bail/lib/python2.7/site-packages/django/db/models/query.py" in 381. num = len(clone) file "/users/username/.virtualenvs/bail/lib/python2.7/site-packages/django/db/models/query.py" in __len__ 240. self._fetch_all() file "/users/username/.virtualenvs/bail/lib/python2.7/site-packages/django/db/models/query.py" in _fetch_all 1074. self._result_cache = list(self.iterator()) file "/users/username/.virtualenvs/bail/lib/python2.7/site-packages/django/db/models/query.py" in __iter__ 52. results = compiler.execute_sql() file "/users/username/.virtualenvs/bail/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql 852. cursor.execute(sql, params) file "/users/username/.virtualenvs/bail/lib/python2.7/site-packages/django/db/backends/utils.py" in execute 79. return super(cursordebugwrapper, self).execute(sql, params) file "/users/username/.virtualenvs/bail/lib/python2.7/site-packages/django/db/backends/utils.py" in execute 64. return self.cursor.execute(sql, params) file "/users/username/.virtualenvs/bail/lib/python2.7/site-packages/django/db/utils.py" in __exit__ 95. six.reraise(dj_exc_type, dj_exc_value, traceback) file "/users/username/.virtualenvs/bail/lib/python2.7/site-packages/django/db/backends/utils.py" in execute 64. return self.cursor.execute(sql, params) exception type: programmingerror @ /cms/ exception value: relation "wagtailcore_site" not exist line 1: ...ge_id", "wagtailcore_site"."is_default_site" "wagtailco... ^
i gave , put wagtail tables first database, , 2 parts of application working fine.
Comments
Post a Comment