Following this guide http://docs.sqlalchemy.org/en/latest/orm/session_transaction.html#joining-a-session-into-an-external-transaction-such-as-for-test-suites using SQLite I created the following test code:
from sqlalchemy import create_engine from sqlalchemy.orm import Session engine = create_engine('sqlite:///:memory:', echo=True) conn = engine.connect() trans = conn.begin() session = Session(bind=conn) session.begin_nested() session.execute('SELECT 1') session.commit() session.begin_nested() session.execute('SELECT 1') session.rollback() trans.rollback() conn.close() Running this throws an exceptions: 2016-10-12 14:03:45,484 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1 2016-10-12 14:03:45,485 INFO sqlalchemy.engine.base.Engine () 2016-10-12 14:03:45,485 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1 2016-10-12 14:03:45,485 INFO sqlalchemy.engine.base.Engine () 2016-10-12 14:03:45,486 INFO sqlalchemy.engine.base.Engine BEGIN (implicit) 2016-10-12 14:03:45,486 INFO sqlalchemy.engine.base.Engine SAVEPOINT sa_savepoint_1 2016-10-12 14:03:45,487 INFO sqlalchemy.engine.base.Engine () 2016-10-12 14:03:45,487 INFO sqlalchemy.engine.base.Engine SELECT 1 2016-10-12 14:03:45,487 INFO sqlalchemy.engine.base.Engine () 2016-10-12 14:03:45,487 INFO sqlalchemy.engine.base.Engine RELEASE SAVEPOINT sa_savepoint_1 2016-10-12 14:03:45,487 INFO sqlalchemy.engine.base.Engine () Traceback (most recent call last): File "sqla_test.py", line 12, in <module> session.commit() File "/Users/fruechel/.virtualenvs/foo/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 874, in commit self.transaction.commit() File "/Users/fruechel/.virtualenvs/foo/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 465, in commit t[1].commit() File "/Users/fruechel/.virtualenvs/foo/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1626, in commit self._do_commit() File "/Users/fruechel/.virtualenvs/foo/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1682, in _do_commit self._savepoint, self._parent) File "/Users/fruechel/.virtualenvs/foo/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 760, in _release_savepoint_impl self.engine.dialect.do_release_savepoint(self, name) File "/Users/fruechel/.virtualenvs/foo/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 456, in do_release_savepoint connection.execute(expression.ReleaseSavepointClause(name)) File "/Users/fruechel/.virtualenvs/foo/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 945, in execute return meth(self, multiparams, params) File "/Users/fruechel/.virtualenvs/foo/lib/python2.7/site-packages/sqlalchemy/sql/elements.py", line 263, in _execute_on_connection return connection._execute_clauseelement(self, multiparams, params) File "/Users/fruechel/.virtualenvs/foo/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement compiled_sql, distilled_params File "/Users/fruechel/.virtualenvs/foo/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1189, in _execute_context context) File "/Users/fruechel/.virtualenvs/foo/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1393, in _handle_dbapi_exception exc_info File "/Users/fruechel/.virtualenvs/foo/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 202, in raise_from_cause reraise(type(exception), exception, tb=exc_tb, cause=cause) File "/Users/fruechel/.virtualenvs/foo/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context context) File "/Users/fruechel/.virtualenvs/foo/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 462, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such savepoint: sa_savepoint_1 [SQL: u'RELEASE SAVEPOINT sa_savepoint_1'] I tested this with Python 2.7 & 3.5 and on SQLAlchemy 1.0.13, 1.0.15 and 1.1.1 and get the same result. Using PostgreSQL instead works perfectly fine and issues the expected queries. Before reporting this as a bug I wanted to make sure I'm not missing something, hence this mail. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.