diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2019-08-21 17:29:55 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2019-08-22 14:01:05 -0400 |
| commit | 4b321e8a5e6b728a818a801c3ad90bb759c584bc (patch) | |
| tree | 07c1d5ba69d129383e783fbf621bf2eec0ab90fc /lib/sqlalchemy/engine | |
| parent | 94385b031c1dac004ee4181cb5783328d740d110 (diff) | |
| download | sqlalchemy-4b321e8a5e6b728a818a801c3ad90bb759c584bc.tar.gz | |
Add hide_parameters flag to create_engine
Added new parameter :paramref:`.create_engine.hide_parameters` which when
set to True will cause SQL parameters to no longer be logged, nor rendered
in the string representation of a :class:`.StatementError` object.
Fixes: #4815
Change-Id: Ib87f868b6936cf6b42b192644e9d732ec24266c2
Diffstat (limited to 'lib/sqlalchemy/engine')
| -rw-r--r-- | lib/sqlalchemy/engine/base.py | 17 | ||||
| -rw-r--r-- | lib/sqlalchemy/engine/create.py | 6 |
2 files changed, 20 insertions, 3 deletions
diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index a708643b3..a0a2680ca 100644 --- a/lib/sqlalchemy/engine/base.py +++ b/lib/sqlalchemy/engine/base.py @@ -1222,9 +1222,14 @@ class Connection(Connectable): if self._echo: self.engine.logger.info(statement) - self.engine.logger.info( - "%r", sql_util._repr_params(parameters, batches=10) - ) + if not self.engine.hide_parameters: + self.engine.logger.info( + "%r", sql_util._repr_params(parameters, batches=10) + ) + else: + self.engine.logger.info( + "[SQL parameters hidden due to hide_parameters=True]" + ) evt_handled = False try: @@ -1388,6 +1393,7 @@ class Connection(Connectable): parameters, e, self.dialect.dbapi.Error, + hide_parameters=self.engine.hide_parameters, dialect=self.dialect, ), exc_info, @@ -1408,6 +1414,7 @@ class Connection(Connectable): parameters, e, self.dialect.dbapi.Error, + hide_parameters=self.engine.hide_parameters, connection_invalidated=self._is_disconnect, dialect=self.dialect, ) @@ -1508,6 +1515,7 @@ class Connection(Connectable): None, e, dialect.dbapi.Error, + hide_parameters=engine.hide_parameters, connection_invalidated=is_disconnect, ) else: @@ -1904,6 +1912,7 @@ class Engine(Connectable, log.Identified): echo=None, proxy=None, execution_options=None, + hide_parameters=False, ): self.pool = pool self.url = url @@ -1911,6 +1920,7 @@ class Engine(Connectable, log.Identified): if logging_name: self.logging_name = logging_name self.echo = echo + self.hide_parameters = hide_parameters log.instance_logger(self, echoflag=echo) if proxy: interfaces.ConnectionProxy._adapt_listener(self, proxy) @@ -2339,6 +2349,7 @@ class OptionEngine(Engine): self.dialect = proxied.dialect self.logging_name = proxied.logging_name self.echo = proxied.echo + self.hide_parameters = proxied.hide_parameters log.instance_logger(self, echoflag=self.echo) # note: this will propagate events that are assigned to the parent diff --git a/lib/sqlalchemy/engine/create.py b/lib/sqlalchemy/engine/create.py index 72be6009b..43378f24e 100644 --- a/lib/sqlalchemy/engine/create.py +++ b/lib/sqlalchemy/engine/create.py @@ -197,6 +197,12 @@ def create_engine(url, **kwargs): be applied to all connections. See :meth:`~sqlalchemy.engine.Connection.execution_options` + :param hide_parameters: Boolean, when set to True, SQL statement parameters + will not be displayed in INFO logging nor will they be formatted into + the string representation of :class:`.StatementError` objects. + + .. versionadded:: 1.3.8 + :param implicit_returning=True: When ``True``, a RETURNING- compatible construct, if available, will be used to fetch newly generated primary key values when a single row |
