]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
get a bit more speed out of datetime and LOB-based types on cx_oracle
authorGaëtan de Menten <gdementen@gmail.com>
Fri, 30 Oct 2009 11:09:45 +0000 (11:09 +0000)
committerGaëtan de Menten <gdementen@gmail.com>
Fri, 30 Oct 2009 11:09:45 +0000 (11:09 +0000)
lib/sqlalchemy/dialects/oracle/cx_oracle.py

index 348c5b6b4712f606e93bff9498169080605b220a..b6f16792e67e9f2d1d61abbb5f8ca8038ff40bbe 100644 (file)
@@ -78,7 +78,7 @@ from sqlalchemy.dialects.oracle.base import OracleCompiler, OracleDialect, RESER
 from sqlalchemy.dialects.oracle import base as oracle
 from sqlalchemy.engine import base
 from sqlalchemy import types as sqltypes, util
-import datetime
+from datetime import datetime
 
 class _OracleDate(sqltypes.Date):
     def bind_processor(self, dialect):
@@ -86,7 +86,7 @@ class _OracleDate(sqltypes.Date):
 
     def result_processor(self, dialect):
         def process(value):
-            if not isinstance(value, datetime.datetime):
+            if not isinstance(value, datetime):
                 return value
             else:
                 return value.date()
@@ -95,11 +95,11 @@ class _OracleDate(sqltypes.Date):
 class _OracleDateTime(sqltypes.DateTime):
     def result_processor(self, dialect):
         def process(value):
-            if value is None or isinstance(value, datetime.datetime):
+            if value is None or isinstance(value, datetime):
                 return value
             else:
                 # convert cx_oracle datetime object returned pre-python 2.4
-                return datetime.datetime(value.year, value.month,
+                return datetime(value.year, value.month,
                     value.day,value.hour, value.minute, value.second)
         return process
 
@@ -112,11 +112,11 @@ class _OracleDateTime(sqltypes.DateTime):
 class _OracleTimestamp(sqltypes.TIMESTAMP):
     def result_processor(self, dialect):
         def process(value):
-            if value is None or isinstance(value, datetime.datetime):
+            if value is None or isinstance(value, datetime):
                 return value
             else:
                 # convert cx_oracle datetime object returned pre-python 2.4
-                return datetime.datetime(value.year, value.month,
+                return datetime(value.year, value.month,
                     value.day,value.hour, value.minute, value.second)
         return process
 
@@ -129,15 +129,16 @@ class _LOBMixin(object):
             
         super_process = super(_LOBMixin, self).result_processor(dialect)
         lob = dialect.dbapi.LOB
-        def process(value):
-            if isinstance(value, lob):
-                if super_process:
+        if super_process:
+            def process(value):
+                if isinstance(value, lob):
                     return super_process(value.read())
                 else:
-                    return value.read()
-            else:
-                if super_process:
                     return super_process(value)
+        else:
+            def process(value):
+                if isinstance(value, lob):
+                    return value.read()
                 else:
                     return value
         return process