1
0
mirror of https://github.com/django/django.git synced 2025-10-24 14:16:09 +00:00

[6.0.x] Fixed #36646 -- Added compatibility for oracledb 3.4.0.

The Database.Binary, Date, and Timestamp attributes were changed from
aliases to bytes, datetime.date, and datetime.datetime to factory
functions in oracle/python-oracledb@869a887819
which made their usage inadequate for isinstance checks.

Thanks John Wagenleitner for the report and Natalia for the triage.

Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>

Backport of 315dbe675d from main
This commit is contained in:
Simon Charette
2025-10-08 18:20:57 +02:00
committed by Mariusz Felisiak
parent 5cc84a35b8
commit c4309f4627
4 changed files with 5 additions and 6 deletions

View File

@@ -433,7 +433,7 @@ class OracleParam:
param = 0 param = 0
if hasattr(param, "bind_parameter"): if hasattr(param, "bind_parameter"):
self.force_bytes = param.bind_parameter(cursor) self.force_bytes = param.bind_parameter(cursor)
elif isinstance(param, (Database.Binary, datetime.timedelta)): elif isinstance(param, (bytes, datetime.timedelta)):
self.force_bytes = param self.force_bytes = param
else: else:
# To transmit to the database, we need Unicode if supported # To transmit to the database, we need Unicode if supported

View File

@@ -273,12 +273,12 @@ END;
return value return value
def convert_datefield_value(self, value, expression, connection): def convert_datefield_value(self, value, expression, connection):
if isinstance(value, Database.Timestamp): if isinstance(value, datetime.datetime):
value = value.date() value = value.date()
return value return value
def convert_timefield_value(self, value, expression, connection): def convert_timefield_value(self, value, expression, connection):
if isinstance(value, Database.Timestamp): if isinstance(value, datetime.datetime):
value = value.time() value = value.time()
return value return value

View File

@@ -24,7 +24,7 @@ class BoundVar:
"BooleanField": int, "BooleanField": int,
"FloatField": Database.DB_TYPE_BINARY_DOUBLE, "FloatField": Database.DB_TYPE_BINARY_DOUBLE,
"DateTimeField": Database.DB_TYPE_TIMESTAMP, "DateTimeField": Database.DB_TYPE_TIMESTAMP,
"DateField": Database.Date, "DateField": datetime.date,
"DecimalField": decimal.Decimal, "DecimalField": decimal.Decimal,
} }

View File

@@ -9,5 +9,4 @@ Django 5.2.8 fixes several bugs in 5.2.7.
Bugfixes Bugfixes
======== ========
* ... * Added compatibility for ``oracledb`` 3.4.0 (:ticket:`36646`).