diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-06-17 00:45:45 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-06-17 00:45:45 +0000 |
| commit | 3736b3ddff65f6d4b7e273b040b48b19dbac9b66 (patch) | |
| tree | 5f77cbdf5af6e9561ecc00251510dcc2ec3c1182 /lib/sqlalchemy | |
| parent | 97dd5dab1e36f17325fc7585e165727688f4d3f5 (diff) | |
| download | sqlalchemy-3736b3ddff65f6d4b7e273b040b48b19dbac9b66.tar.gz | |
if an object fails construction, doesnt get added to the session
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/orm/mapper.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 90db7f83e..ac8d6f330 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -468,7 +468,12 @@ class Mapper(object): session._register_new(self) if oldinit is not None: - oldinit(self, *args, **kwargs) + try: + oldinit(self, *args, **kwargs) + except: + if session is not None: + session.expunge(self) + raise # override oldinit, insuring that its not already a Mapper-decorated init method if oldinit is None or not hasattr(oldinit, '_sa_mapper_init'): init._sa_mapper_init = True |
