Skip to content

Commit 315dbe6

Browse files
charettesfelixxm
andcommitted
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@869a887 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>
1 parent 1167cd1 commit 315dbe6

4 files changed

Lines changed: 5 additions & 6 deletions

File tree

django/db/backends/oracle/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ def __init__(self, param, cursor, strings_only=False):
433433
param = 0
434434
if hasattr(param, "bind_parameter"):
435435
self.force_bytes = param.bind_parameter(cursor)
436-
elif isinstance(param, (Database.Binary, datetime.timedelta)):
436+
elif isinstance(param, (bytes, datetime.timedelta)):
437437
self.force_bytes = param
438438
else:
439439
# To transmit to the database, we need Unicode if supported

django/db/backends/oracle/operations.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,12 +273,12 @@ def convert_datetimefield_value(self, value, expression, connection):
273273
return value
274274

275275
def convert_datefield_value(self, value, expression, connection):
276-
if isinstance(value, Database.Timestamp):
276+
if isinstance(value, datetime.datetime):
277277
value = value.date()
278278
return value
279279

280280
def convert_timefield_value(self, value, expression, connection):
281-
if isinstance(value, Database.Timestamp):
281+
if isinstance(value, datetime.datetime):
282282
value = value.time()
283283
return value
284284

django/db/backends/oracle/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class BoundVar:
2424
"BooleanField": int,
2525
"FloatField": Database.DB_TYPE_BINARY_DOUBLE,
2626
"DateTimeField": Database.DB_TYPE_TIMESTAMP,
27-
"DateField": Database.Date,
27+
"DateField": datetime.date,
2828
"DecimalField": decimal.Decimal,
2929
}
3030

docs/releases/5.2.8.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,4 @@ Django 5.2.8 fixes several bugs in 5.2.7.
99
Bugfixes
1010
========
1111

12-
* ...
13-
12+
* Added compatibility for ``oracledb`` 3.4.0 (:ticket:`36646`).

0 commit comments

Comments
 (0)