Skip to content

Python 3.12 + django 5.2.7 + oracledb 3.4.0 gives TypeError #544

@arunskrish

Description

@arunskrish
  1. What versions are you using?

Oracledb 3.4.0 + Python 3.12 + django 5.2.7

  1. Is it an error or a hang or a crash?
    Django start gives error

  2. What error(s) or behavior you are seeing?

Django start fails with -

Traceback (most recent call last):
File "/python_dir/python3.12/threading.py", line 1075, in _bootstrap_inner
self.run()
File "/python_dir/python3.12/threading.py", line 1012, in run
self._target(*self._args, **self._kwargs)
File "/xyz/virtualenv/lib/python3.12/site-packages/django/utils/autoreload.py", line 64, in wrapper
fn(*args, **kwargs)
File "/xyz/virtualenv/lib/python3.12/site-packages/django/core/management/commands/runserver.py", line 137, in inner_run
self.check_migrations()
File "/xyz/virtualenv/lib/python3.12/site-packages/django/core/management/base.py", line 587, in check_migrations
executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/xyz/virtualenv/lib/python3.12/site-packages/django/db/migrations/executor.py", line 18, in init
self.loader = MigrationLoader(self.connection)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/xyz/virtualenv/lib/python3.12/site-packages/django/db/migrations/loader.py", line 58, in init
self.build_graph()
File "/xyz/virtualenv/lib/python3.12/site-packages/django/db/migrations/loader.py", line 235, in build_graph
self.applied_migrations = recorder.applied_migrations()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/xyz/virtualenv/lib/python3.12/site-packages/django/db/migrations/recorder.py", line 89, in applied_migrations
if self.has_table():
^^^^^^^^^^^^^^^^
File "/xyz/virtualenv/lib/python3.12/site-packages/django/db/migrations/recorder.py", line 63, in has_table
with self.connection.cursor() as cursor:
^^^^^^^^^^^^^^^^^^^^^^^^
File "/xyz/virtualenv/lib/python3.12/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/xyz/virtualenv/lib/python3.12/site-packages/django/db/backends/base/base.py", line 320, in cursor
return self._cursor()
^^^^^^^^^^^^^^
File "/xyz/virtualenv/lib/python3.12/site-packages/django/db/backends/base/base.py", line 296, in _cursor
self.ensure_connection()
File "/xyz/virtualenv/lib/python3.12/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/xyz/virtualenv/lib/python3.12/site-packages/django/db/backends/base/base.py", line 279, in ensure_connection
self.connect()
File "/xyz/virtualenv/lib/python3.12/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/xyz/virtualenv/lib/python3.12/site-packages/django/db/backends/base/base.py", line 258, in connect
self.init_connection_state()
File "/xyz/virtualenv/lib/python3.12/site-packages/django/db/backends/oracle/base.py", line 336, in init_connection_state
cursor.execute(
File "/xyz/virtualenv/lib/python3.12/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 "/xyz/virtualenv/lib/python3.12/site-packages/django/db/backends/oracle/base.py", line 627, in _fix_for_params
return query, self._format_params(params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/xyz/virtualenv/lib/python3.12/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 "/xyz/virtualenv/lib/python3.12/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

  1. Does your application call init_oracle_client()?

No, using thin client.

  1. Include a runnable Python script that shows the problem.

We are trying to upgrade a django project. Tried creating a sample django project with the above mentioned dependencies and it reproduced. The same works fine with oracledb 3.3.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions