diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-12-08 11:23:21 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-12-08 11:23:21 -0500 |
commit | 1ee4736beaadeb9053f8886503b64ee04fa4b557 (patch) | |
tree | e67e2b6347a11a5eef84ff11d76c142ba53b10ff /lib/sqlalchemy/ext/serializer.py | |
parent | d57c1c2ddd654a1077ab04ba7277828d9030c23d (diff) | |
parent | f8caf05593a00a61d5ef6467c334c1e594fbae86 (diff) | |
download | sqlalchemy-1ee4736beaadeb9053f8886503b64ee04fa4b557.tar.gz |
merge latest default
Diffstat (limited to 'lib/sqlalchemy/ext/serializer.py')
-rw-r--r-- | lib/sqlalchemy/ext/serializer.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/sqlalchemy/ext/serializer.py b/lib/sqlalchemy/ext/serializer.py index 3ed41f48a..c129b0dcc 100644 --- a/lib/sqlalchemy/ext/serializer.py +++ b/lib/sqlalchemy/ext/serializer.py @@ -54,6 +54,7 @@ needed for: from ..orm import class_mapper from ..orm.session import Session from ..orm.mapper import Mapper +from ..orm.interfaces import MapperProperty from ..orm.attributes import QueryableAttribute from .. import Table, Column from ..engine import Engine @@ -90,6 +91,9 @@ def Serializer(*args, **kw): id = "attribute:" + key + ":" + b64encode(pickle.dumps(cls)) elif isinstance(obj, Mapper) and not obj.non_primary: id = "mapper:" + b64encode(pickle.dumps(obj.class_)) + elif isinstance(obj, MapperProperty) and not obj.parent.non_primary: + id = "mapperprop:" + b64encode(pickle.dumps(obj.parent.class_)) + \ + ":" + obj.key elif isinstance(obj, Table): id = "table:" + str(obj) elif isinstance(obj, Column) and isinstance(obj.table, Table): @@ -134,6 +138,10 @@ def Deserializer(file, metadata=None, scoped_session=None, engine=None): elif type_ == "mapper": cls = pickle.loads(b64decode(args)) return class_mapper(cls) + elif type_ == "mapperprop": + mapper, keyname = args.split(':') + cls = pickle.loads(b64decode(args)) + return class_mapper(cls).attrs[keyname] elif type_ == "table": return metadata.tables[args] elif type_ == "column": |