]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Made the PickleType slightly faster.
authorGaëtan de Menten <gdementen@gmail.com>
Wed, 10 Oct 2007 15:58:10 +0000 (15:58 +0000)
committerGaëtan de Menten <gdementen@gmail.com>
Wed, 10 Oct 2007 15:58:10 +0000 (15:58 +0000)
CHANGES
lib/sqlalchemy/types.py

diff --git a/CHANGES b/CHANGES
index fef049096f1ae40b127b9ab9d5d11542df215ec4..e33c3385490a347ca5a8c4f95d3de7aee69522e2 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -58,6 +58,8 @@ CHANGES
 
 - fixed Oracle non-ansi join syntax
 
+- The PickleType is now slightly faster.
+
 0.4.0beta6
 ----------
 
index 3ef990c0b151ae4bf084a66f7c1f077ebd2677b8..02e36e0f343c2b3dd7bdadd4edd395b4a3283983 100644 (file)
@@ -419,9 +419,10 @@ class Binary(TypeEngine):
         self.length = length
 
     def bind_processor(self, dialect):
+        DBAPIBinary = dialect.dbapi.Binary
         def process(value):
             if value is not None:
-                return dialect.dbapi.Binary(value)
+                return DBAPIBinary(value)
             else:
                 return None
         return process
@@ -444,23 +445,33 @@ class PickleType(MutableType, TypeDecorator):
 
     def bind_processor(self, dialect):
         impl_process = self.impl.bind_processor(dialect)
-        def process(value):
-            if value is None:
-                return None
-            if impl_process is None:
-                return self.pickler.dumps(value, self.protocol)
-            else:
-                return impl_process(self.pickler.dumps(value, self.protocol))
+        dumps = self.pickler.dumps
+        protocol = self.protocol
+        if impl_process is None:
+            def process(value):
+                if value is None:
+                    return None
+                return dumps(value, protocol)
+        else:
+            def process(value):
+                if value is None:
+                    return None
+                return impl_process(dumps(value, protocol))
         return process
     
     def result_processor(self, dialect):
         impl_process = self.impl.result_processor(dialect)
-        def process(value):
-            if value is None:
-                return None
-            if impl_process is not None:
-                value = impl_process(value)
-            return self.pickler.loads(str(value))
+        loads = self.pickler.loads
+        if impl_process is None:
+            def process(value):
+                if value is None:
+                    return None
+                return loads(str(value))
+        else:
+            def process(value):
+                if value is None:
+                    return None
+                return loads(str(impl_process(value)))
         return process
         
     def copy_value(self, value):