diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-01-13 17:11:27 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-01-13 17:11:27 +0000 |
| commit | 3c1a8adc782b9440b3e7e350712cdfa231c56f7f (patch) | |
| tree | ec54c4be11682f6221fab4a744c83a28bd188e30 /lib | |
| parent | fccc3774171f1cbf6490363fe9d20d8cc9d78827 (diff) | |
| download | sqlalchemy-3c1a8adc782b9440b3e7e350712cdfa231c56f7f.tar.gz | |
NamedTuple is pickleable ! no really with all the protocols too !
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sqlalchemy/orm/query.py | 5 | ||||
| -rw-r--r-- | lib/sqlalchemy/util.py | 7 |
2 files changed, 6 insertions, 6 deletions
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index bd9069e3a..fc83f9195 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -1375,8 +1375,7 @@ class Query(object): elif single_entity: rows = [process[0](row, None) for row in fetch] else: - rows = [util.NamedTuple(labels, - [proc(row, None) for proc in process]) + rows = [util.NamedTuple([proc(row, None) for proc in process], labels) for row in fetch] if filter: @@ -1445,7 +1444,7 @@ class Query(object): attributes.instance_state(newrow[i]), attributes.instance_dict(newrow[i]), load=load, _recursive={}) - result.append(util.NamedTuple(row._labels, newrow)) + result.append(util.NamedTuple(newrow, row._labels)) return iter(result) finally: diff --git a/lib/sqlalchemy/util.py b/lib/sqlalchemy/util.py index f7d696971..c3ae25589 100644 --- a/lib/sqlalchemy/util.py +++ b/lib/sqlalchemy/util.py @@ -642,11 +642,12 @@ class NamedTuple(tuple): """ - def __new__(cls, labels, vals): + def __new__(cls, vals, labels=None): vals = list(vals) t = tuple.__new__(cls, vals) - t.__dict__ = dict(itertools.izip(labels, vals)) - t._labels = labels + if labels: + t.__dict__ = dict(itertools.izip(labels, vals)) + t._labels = labels return t def keys(self): |
