summaryrefslogtreecommitdiff
path: root/django/db/backends/oracle/utils.py
diff options
context:
space:
mode:
authorMikhail Nacharov <mnach@yandex.ru>2017-02-07 09:49:31 +0500
committerTim Graham <timograham@gmail.com>2017-02-09 18:47:08 -0500
commitc4e2fc5d9872c9a0c9c052a2e124f8a9b87de9b4 (patch)
tree530e98c87e77d6c3922aa545ef0d309d7e9dac51 /django/db/backends/oracle/utils.py
parent965f678a39b79f8e0bdc8222df094916fd7f8ed4 (diff)
downloaddjango-c4e2fc5d9872c9a0c9c052a2e124f8a9b87de9b4.tar.gz
Fixed #22669 -- Fixed QuerySet.bulk_create() with empty model fields on Oracle.
Diffstat (limited to 'django/db/backends/oracle/utils.py')
-rw-r--r--django/db/backends/oracle/utils.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/django/db/backends/oracle/utils.py b/django/db/backends/oracle/utils.py
index f958655f94..6c81d5cd7b 100644
--- a/django/db/backends/oracle/utils.py
+++ b/django/db/backends/oracle/utils.py
@@ -29,3 +29,27 @@ class Oracle_datetime(datetime.datetime):
dt.year, dt.month, dt.day,
dt.hour, dt.minute, dt.second, dt.microsecond,
)
+
+
+class BulkInsertMapper:
+ BLOB = 'TO_BLOB(%s)'
+ DATE = 'TO_DATE(%s)'
+ INTERVAL = 'CAST(%s as INTERVAL DAY(9) TO SECOND(6))'
+ NUMBER = 'TO_NUMBER(%s)'
+ TIMESTAMP = 'TO_TIMESTAMP(%s)'
+
+ types = {
+ 'BigIntegerField': NUMBER,
+ 'BinaryField': BLOB,
+ 'DateField': DATE,
+ 'DateTimeField': TIMESTAMP,
+ 'DecimalField': NUMBER,
+ 'DurationField': INTERVAL,
+ 'FloatField': NUMBER,
+ 'IntegerField': NUMBER,
+ 'NullBooleanField': NUMBER,
+ 'PositiveIntegerField': NUMBER,
+ 'PositiveSmallIntegerField': NUMBER,
+ 'SmallIntegerField': NUMBER,
+ 'TimeField': TIMESTAMP,
+ }