From 9604703c5996063354c665af8b71c2d413faa41e Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Thu, 11 Jun 2015 15:38:14 -0700 Subject: [PATCH] Make it possible to see the queries executed (in BLATHER mode) Part of blueprint make-things-speedy Change-Id: I3ac092e98a492d3a70c7780efb4647d593fa70d1 --- taskflow/persistence/backends/impl_sqlalchemy.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/taskflow/persistence/backends/impl_sqlalchemy.py b/taskflow/persistence/backends/impl_sqlalchemy.py index 483dd445..d5342018 100644 --- a/taskflow/persistence/backends/impl_sqlalchemy.py +++ b/taskflow/persistence/backends/impl_sqlalchemy.py @@ -108,6 +108,12 @@ DEFAULT_TXN_ISOLATION_LEVELS = { } +def _log_statements(log_level, conn, cursor, statement, parameters, *args): + if LOG.isEnabledFor(log_level): + LOG.log(log_level, "Running statement '%s' with parameters %s", + statement, parameters) + + def _in_any(reason, err_haystack): """Checks if any elements of the haystack are in the given reason.""" for err in err_haystack: @@ -290,6 +296,13 @@ class SQLAlchemyBackend(base.Backend): # or engine arg overrides make sure we merge them in. engine_args.update(conf.pop('engine_args', {})) engine = sa.create_engine(sql_connection, **engine_args) + log_statements = conf.pop('log_statements', False) + if _as_bool(log_statements): + log_statements_level = conf.pop("log_statements_level", + logging.BLATHER) + sa.event.listen(engine, "before_cursor_execute", + functools.partial(_log_statements, + log_statements_level)) checkin_yield = conf.pop('checkin_yield', eventlet_utils.EVENTLET_AVAILABLE) if _as_bool(checkin_yield):