summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-06-17 00:45:45 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-06-17 00:45:45 +0000
commit3736b3ddff65f6d4b7e273b040b48b19dbac9b66 (patch)
tree5f77cbdf5af6e9561ecc00251510dcc2ec3c1182 /lib/sqlalchemy
parent97dd5dab1e36f17325fc7585e165727688f4d3f5 (diff)
downloadsqlalchemy-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.py7
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