summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2019-08-21 17:29:55 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2019-08-22 14:01:05 -0400
commit4b321e8a5e6b728a818a801c3ad90bb759c584bc (patch)
tree07c1d5ba69d129383e783fbf621bf2eec0ab90fc /lib/sqlalchemy/engine
parent94385b031c1dac004ee4181cb5783328d740d110 (diff)
downloadsqlalchemy-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.py17
-rw-r--r--lib/sqlalchemy/engine/create.py6
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