When you test this manually, are you using the same credentials as what your Django code is using?
Yes. I have just 1 set of credentials to access the legacy DB.
What happens if you use the manage.py dbshell
command to open up the database connection? Does that work?
It does. If I \d
I can see Django tables:
(.venv) .venv ❯ ./manage.py dbshell
psql (17.4, server 16.4 (Debian 16.4-1.pgdg120+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off, ALPN: none)
Type "help" for help.
tintometricoadmin=> \d
List of relations
Schema | Name | Type | Owner
--------+-------------------------------+----------+----------------------
public | auth_group | table | tintometricoadminusr
public | auth_group_id_seq | sequence | tintometricoadminusr
public | auth_group_permissions | table | tintometricoadminusr
public | auth_group_permissions_id_seq | sequence | tintometricoadminusr
public | auth_permission | table | tintometricoadminusr
public | auth_permission_id_seq | sequence | tintometricoadminusr
public | django_admin_log | table | tintometricoadminusr
public | django_admin_log_id_seq | sequence | tintometricoadminusr
public | django_content_type | table | tintometricoadminusr
public | django_content_type_id_seq | sequence | tintometricoadminusr
public | django_migrations | table | tintometricoadminusr
public | django_migrations_id_seq | sequence | tintometricoadminusr
public | django_session | table | tintometricoadminusr
public | user | table | tintometricoadminusr
public | user_groups | table | tintometricoadminusr
public | user_groups_id_seq | sequence | tintometricoadminusr
public | user_user_permissions | table | tintometricoadminusr
public | user_user_permissions_id_seq | sequence | tintometricoadminusr
(18 rows)
tintometricoadmin=>
What if you open the regular Django shell and try to run the query? (PaintColor.objects.all()
)
Same behavior:
(.venv) .venv ❯ ./manage.py shell
Python 3.13.1 (v3.13.1:06714517797, Dec 3 2024, 14:00:22) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from apps.acotone.models import PaintColor
>>> PaintColor.objects.all()
[DEBUG] [none] 2025-03-29 20:14:29,406 - apps.acotone.routers:db_for_read:37 - LegacyRouter.db_for_read model: <class 'apps.acotone.models.PaintColor'>
[DEBUG] [none] 2025-03-29 20:14:29,406 - apps.acotone.routers:db_for_read:40 - LegacyRouter model._meta.app_label: acotone
Traceback (most recent call last):
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 105, in _execute
return self.cursor.execute(sql, params)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/psycopg/cursor.py", line 97, in execute
raise ex.with_traceback(None)
psycopg.errors.UndefinedTable: relation "PaintColor" does not exist
LINE 1: ...ntColor"."colorOrder", "PaintColor"."status" FROM "PaintColo...
^
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 376, in __repr__
data = list(self[: REPR_OUTPUT_SIZE + 1])
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 400, in __iter__
self._fetch_all()
~~~~~~~~~~~~~~~^^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 1928, in _fetch_all
self._result_cache = list(self._iterable_class(self))
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 91, in __iter__
results = compiler.execute_sql(
chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size
)
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
cursor.execute(sql, params)
~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 122, in execute
return super().execute(sql, params)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
sql, params, many=False, executor=self._execute
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 100, in _execute
with self.db.wrap_database_errors:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 105, in _execute
return self.cursor.execute(sql, params)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/psycopg/cursor.py", line 97, in execute
raise ex.with_traceback(None)
django.db.utils.ProgrammingError: relation "PaintColor" does not exist
LINE 1: ...ntColor"."colorOrder", "PaintColor"."status" FROM "PaintColo...
If that doesn’t work, what happens then if you then run that query with the using
clause?
Also, same issue.
(.venv) .venv ❯ ./manage.py shell
Python 3.13.1 (v3.13.1:06714517797, Dec 3 2024, 14:00:22) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from apps.acotone.models import PaintColor
>>> PaintColor.objects.using('legacy').all()
Traceback (most recent call last):
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 105, in _execute
return self.cursor.execute(sql, params)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/psycopg/cursor.py", line 97, in execute
raise ex.with_traceback(None)
psycopg.errors.UndefinedTable: relation "PaintColor" does not exist
LINE 1: ...ntColor"."colorOrder", "PaintColor"."status" FROM "PaintColo...
^
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 376, in __repr__
data = list(self[: REPR_OUTPUT_SIZE + 1])
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 400, in __iter__
self._fetch_all()
~~~~~~~~~~~~~~~^^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 1928, in _fetch_all
self._result_cache = list(self._iterable_class(self))
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 91, in __iter__
results = compiler.execute_sql(
chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size
)
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
cursor.execute(sql, params)
~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 122, in execute
return super().execute(sql, params)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
sql, params, many=False, executor=self._execute
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 100, in _execute
with self.db.wrap_database_errors:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 105, in _execute
return self.cursor.execute(sql, params)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/Users/alexandremjacques/Development/Projects/Python/tintometrico_admin/.venv/lib/python3.13/site-packages/psycopg/cursor.py", line 97, in execute
raise ex.with_traceback(None)
django.db.utils.ProgrammingError: relation "PaintColor" does not exist
LINE 1: ...ntColor"."colorOrder", "PaintColor"."status" FROM "PaintColo...
^