﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
36650	oracledb-3.4.0 -> TypeError: isinstance() arg 2 must be a type, a tuple of types, or a union	MV		"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.

{{{#!python
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_operators[""contains""],
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        [""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
}}}"	Bug	closed	Database layer (models, ORM)	5.2	Normal	duplicate		MV	Unreviewed	0	0	0	0	0	0
