diff options
| -rw-r--r-- | lib/sqlalchemy/orm/session.py | 2 | ||||
| -rw-r--r-- | test/orm/session.py | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index 440f69ae8..5583012e5 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 058548e2c..c07169611 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()""" |
