diff options
author | Jason Kirtland <jek@discorporate.us> | 2007-08-21 07:55:43 +0000 |
---|---|---|
committer | Jason Kirtland <jek@discorporate.us> | 2007-08-21 07:55:43 +0000 |
commit | 47670faa30c99fa2bd92bd9caf35cd30470534b5 (patch) | |
tree | b64cbb4875612790e4d4703aa7bb45a937e5feb7 /lib/sqlalchemy/sql/util.py | |
parent | 6228e72cb15be6e84260440d20369c91858b4640 (diff) | |
download | sqlalchemy-47670faa30c99fa2bd92bd9caf35cd30470534b5.tar.gz |
A couple critical path optimizations
(some sql operations faster by nearly 10% wallclock, general orm around 3%)
Diffstat (limited to 'lib/sqlalchemy/sql/util.py')
-rw-r--r-- | lib/sqlalchemy/sql/util.py | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/sqlalchemy/sql/util.py b/lib/sqlalchemy/sql/util.py index 2c7294e66..a1d44ccfe 100644 --- a/lib/sqlalchemy/sql/util.py +++ b/lib/sqlalchemy/sql/util.py @@ -12,10 +12,15 @@ class ClauseParameters(object): the ``TypeEngine`` objects present in the ``_BindParamClause`` instances. """ + __slots__ = 'dialect', '__binds', 'positional' + def __init__(self, dialect, positional=None): self.dialect = dialect self.__binds = {} - self.positional = positional or [] + if positional is None: + self.positional = [] + else: + self.positional = positional def get_parameter(self, key): return self.__binds[key] @@ -68,9 +73,15 @@ class ClauseParameters(object): return processors[key](self.__binds[key][2]) else: return self.__binds[key][2] - + def get_raw_list(self, processors): - return [self.__get_processed(key, processors) for key in self.positional] + binds, res = self.__binds, [] + for key in self.positional: + if key in processors: + res.append(processors[key](binds[key][2])) + else: + res.append(binds[key][2]) + return res def get_raw_dict(self, processors, encode_keys=False): if encode_keys: |