From: Gaƫtan de Menten Date: Wed, 10 Oct 2007 15:58:10 +0000 (+0000) Subject: Made the PickleType slightly faster. X-Git-Tag: rel_0_4_0~47 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1d05d76cad30e96e54adb5cf2f03e7a0bc5aab8a;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Made the PickleType slightly faster. --- diff --git a/CHANGES b/CHANGES index fef049096f..e33c338549 100644 --- a/CHANGES +++ b/CHANGES @@ -58,6 +58,8 @@ CHANGES - fixed Oracle non-ansi join syntax +- The PickleType is now slightly faster. + 0.4.0beta6 ---------- diff --git a/lib/sqlalchemy/types.py b/lib/sqlalchemy/types.py index 3ef990c0b1..02e36e0f34 100644 --- a/lib/sqlalchemy/types.py +++ b/lib/sqlalchemy/types.py @@ -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):