diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-03-07 11:17:47 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-03-07 11:17:47 -0500 |
| commit | fbacb1991585202a5bf22acb0d36b5c979bcfad8 (patch) | |
| tree | 22d51e00560d2209457530c6f572674807edd084 /lib/sqlalchemy/testing | |
| parent | a289e05226e20cc6de9deb479f63297320ef7c5c (diff) | |
| download | sqlalchemy-fbacb1991585202a5bf22acb0d36b5c979bcfad8.tar.gz | |
test sqlite w/ savepoint workaround in session fixture test
Fixes: #7795
Change-Id: Ib790581555656c088f86c00080c70d19ca295a03
Diffstat (limited to 'lib/sqlalchemy/testing')
| -rw-r--r-- | lib/sqlalchemy/testing/engines.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/sqlalchemy/testing/engines.py b/lib/sqlalchemy/testing/engines.py index 79adb8c3c..4496b8ded 100644 --- a/lib/sqlalchemy/testing/engines.py +++ b/lib/sqlalchemy/testing/engines.py @@ -306,8 +306,10 @@ def testing_engine( options=None, asyncio=False, transfer_staticpool=False, + _sqlite_savepoint=False, ): if asyncio: + assert not _sqlite_savepoint from sqlalchemy.ext.asyncio import ( create_async_engine as create_engine, ) @@ -318,9 +320,11 @@ def testing_engine( if not options: use_reaper = True scope = "function" + sqlite_savepoint = False else: use_reaper = options.pop("use_reaper", True) scope = options.pop("scope", "function") + sqlite_savepoint = options.pop("sqlite_savepoint", False) url = url or config.db.url @@ -336,6 +340,16 @@ def testing_engine( engine = create_engine(url, **options) + if sqlite_savepoint and engine.name == "sqlite": + # apply SQLite savepoint workaround + @event.listens_for(engine, "connect") + def do_connect(dbapi_connection, connection_record): + dbapi_connection.isolation_level = None + + @event.listens_for(engine, "begin") + def do_begin(conn): + conn.exec_driver_sql("BEGIN") + if transfer_staticpool: from sqlalchemy.pool import StaticPool |
