Opened 45 hours ago

Last modified 43 hours ago

#36650 closed Bug

oracledb-3.4.0 -> TypeError: isinstance() arg 2 must be a type, a tuple of types, or a union — at Initial Version

Reported by: MV Owned by:
Component: Database layer (models, ORM) Version: 5.2
Severity: Normal Keywords:
Cc: MV Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

When upgrading oracledb to version 3.4.0, Django stops working with error "TypeError: isinstance() arg 2 must be a type, a tuple of types, or a union."

Using oracledb-3.3.0 works as expected.

...
Performing system checks...

System check identified no issues (0 silenced).
2025-10-08 09:18:33,020: INFO: acst_app.models.file: 10001
2025-10-08 09:18:33,023: INFO: acst_app.models.file: 10001 elapsed time 00m00s
Exception in thread django-main-thread:
Traceback (most recent call last):

File "/root/.pyenv/versions/3.13.7/lib/python3.13/threading.py", line 1043, in _bootstrap_inner

self.run()

File "/root/.pyenv/versions/3.13.7/lib/python3.13/threading.py", line 994, in run

self._target(*self._args, self._kwargs)

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/utils/autoreload.py", line 64, in wrapper

fn(*args, kwargs)

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/core/management/commands/runserver.py", line 137, in inner_run

self.check_migrations()
~

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/core/management/base.py", line 587, in check_migrations

executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/db/migrations/executor.py", line 18, in init

self.loader = MigrationLoader(self.connection)

~

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/db/migrations/loader.py", line 58, in init

self.build_graph()

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/db/migrations/loader.py", line 235, in build_graph

self.applied_migrations = recorder.applied_migrations()

~

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/db/migrations/recorder.py", line 89, in applied_migrations

if self.has_table():


File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/db/migrations/recorder.py", line 63, in has_table

with self.connection.cursor() as cursor:


File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/utils/asyncio.py", line 26, in inner

return func(*args, kwargs)

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/db/backends/base/base.py", line 320, in cursor

return self._cursor()


File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/db/backends/base/base.py", line 296, in _cursor

self.ensure_connection()

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/utils/asyncio.py", line 26, in inner

return func(*args, kwargs)

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/db/backends/base/base.py", line 279, in ensure_connection

self.connect()

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/utils/asyncio.py", line 26, in inner

return func(*args, kwargs)

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/db/backends/base/base.py", line 258, in connect

self.init_connection_state()

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/db/backends/oracle/base.py", line 336, in init_connection_state

cursor.execute(

"SELECT 1 FROM DUAL WHERE DUMMY %s"

% self._standard_operatorscontains,

X,

)

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/db/backends/oracle/base.py", line 630, in execute

query, params = self._fix_for_params(query, params, unify_by_values=True)


File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/db/backends/oracle/base.py", line 627, in _fix_for_params

return query, self._format_params(params)

~

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/db/backends/oracle/base.py", line 555, in _format_params

return {k: OracleParam(v, self, True) for k, v in params.items()}

~

File "/root/.pyenv/versions/django_acst_venv_3137/lib/python3.13/site-packages/django/db/backends/oracle/base.py", line 441, in init

elif isinstance(param, (Database.Binary, datetime.timedelta)):


TypeError: isinstance() arg 2 must be a type, a tuple of types, or a union

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top