From: Mike Bayer Date: Fri, 16 May 2008 22:15:44 +0000 (+0000) Subject: dont raise assertions when in autocommit mode [ticket:1046] X-Git-Tag: rel_0_5beta1~63 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7d3ba0dec7c5e64f62108d7c4fb9b0cec1cc586a;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git dont raise assertions when in autocommit mode [ticket:1046] --- diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index 440f69ae86..5583012e53 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -253,7 +253,7 @@ class SessionTransaction(object): if self.nested: self.session.flush() - if self.autoflush: + if self.autoflush and not self.session.autocommit: # TODO: the "dirty_states" assertion is expensive, # so consider these assertions as temporary # during development diff --git a/test/orm/session.py b/test/orm/session.py index 058548e2c5..c07169611f 100644 --- a/test/orm/session.py +++ b/test/orm/session.py @@ -270,7 +270,18 @@ class SessionTest(_fixtures.FixtureTest): assert newad not in u.addresses # pending objects dont get expired assert newad.email_address == 'a new address' + + @testing.resolve_artifact_names + def test_autocommit_doesnt_raise_on_pending(self): + mapper(User, users) + session = create_session(autocommit=True) + + session.add(User(name='ed')) + session.begin() + session.flush() + session.commit() + @testing.resolve_artifact_names def test_textual_execute(self): """test that Session.execute() converts to text()"""