summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sqlalchemy/orm/session.py2
-rw-r--r--test/orm/session.py11
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()"""