summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine/base.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2022-03-24 13:58:20 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2022-03-24 13:59:02 -0400
commit56366924673f88e51c74d94058c11132a057ecfa (patch)
tree1d96a3c5f86b77f0879c2f6c3624653919400def /lib/sqlalchemy/engine/base.py
parentc565c470517e1cc70a7f33d1ad3d3256935f1121 (diff)
downloadsqlalchemy-56366924673f88e51c74d94058c11132a057ecfa.tar.gz
more autocommit messaging
Further clarified connection-level logging to indicate the BEGIN, ROLLBACK and COMMIT log messages do not actually indicate a real transaction when the AUTOCOMMIT isolation level is in use; messaging has been extended to include the BEGIN message itself, and the messaging has also been fixed to accommodate when the :class:`.Engine` level :paramref:`.create_engine.isolation_level` parameter was used directly. Fixes: #7853 Change-Id: Iafc78070737ad117f84262e4bde84b81a81e4ea1
Diffstat (limited to 'lib/sqlalchemy/engine/base.py')
-rw-r--r--lib/sqlalchemy/engine/base.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py
index 061794bde..6a79cdf02 100644
--- a/lib/sqlalchemy/engine/base.py
+++ b/lib/sqlalchemy/engine/base.py
@@ -925,9 +925,14 @@ class Connection(ConnectionEventsTarget, inspection.Inspectable["Inspector"]):
)
def _is_autocommit_isolation(self) -> bool:
+ opt_iso = self._execution_options.get("isolation_level", None)
return bool(
- self._execution_options.get("isolation_level", None)
- == "AUTOCOMMIT"
+ opt_iso == "AUTOCOMMIT"
+ or (
+ opt_iso is None
+ and self.engine.dialect._on_connect_isolation_level
+ == "AUTOCOMMIT"
+ )
)
def get_transaction(self) -> Optional[RootTransaction]:
@@ -949,7 +954,13 @@ class Connection(ConnectionEventsTarget, inspection.Inspectable["Inspector"]):
def _begin_impl(self, transaction: RootTransaction) -> None:
if self._echo:
- self._log_info("BEGIN (implicit)")
+ if self._is_autocommit_isolation():
+ self._log_info(
+ "BEGIN (implicit; DBAPI should not BEGIN due to "
+ "autocommit mode)"
+ )
+ else:
+ self._log_info("BEGIN (implicit)")
self.__in_begin = True