From: Mike Bayer Date: Wed, 22 Aug 2007 16:58:26 +0000 (+0000) Subject: - restored engine.echo flag X-Git-Tag: rel_0_4beta4~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e2bb1503bf2b8ec5cd35206ec8e77f14d249f130;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - restored engine.echo flag - changelog --- diff --git a/CHANGES b/CHANGES index 9974f08cf3..732499d909 100644 --- a/CHANGES +++ b/CHANGES @@ -22,6 +22,10 @@ CHANGES - Fix to bind param processing such that "False" values (like blank strings) still get processed/encoded. +- Fix to select() "generative" behavior, such that calling column(), + select_from(), correlate(), and with_prefix() does not modify the + original select object [ticket:752] + - Added a "legacy" adapter to types, such that user-defined TypeEngine and TypeDecorator classes which define convert_bind_param() and/or convert_result_value() will continue to function. Also supports diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index d3d96a711a..c13c1d9468 100644 --- a/lib/sqlalchemy/engine/base.py +++ b/lib/sqlalchemy/engine/base.py @@ -1010,6 +1010,7 @@ class Engine(Connectable): self.logger = logging.instance_logger(self, echoflag=echo) name = property(lambda s:sys.modules[s.dialect.__module__].descriptor()['name'], doc="String name of the [sqlalchemy.engine#Dialect] in use by this ``Engine``.") + echo = logging.echo_property() def __repr__(self): return 'Engine(%s)' % str(self.url) diff --git a/lib/sqlalchemy/logging.py b/lib/sqlalchemy/logging.py index 2dfd1e50ad..2ced66109e 100644 --- a/lib/sqlalchemy/logging.py +++ b/lib/sqlalchemy/logging.py @@ -75,4 +75,23 @@ def instance_logger(instance, echoflag=None): instance._should_log_debug = l.isEnabledFor(logging.DEBUG) instance._should_log_info = l.isEnabledFor(logging.INFO) return l + +class echo_property(object): + __doc__ = """when ``True``, enable log output for this element. + + This has the effect of setting the Python logging level for the + namespace of this element's class and object reference. A value + of boolean ``True`` indicates that the loglevel ``logging.INFO`` will be + set for the logger, whereas the string value ``debug`` will set the loglevel + to ``logging.DEBUG``. + """ + + def __get__(self, instance, owner): + if instance is None: + return self + else: + return instance._should_log_debug and 'debug' or (instance._should_log_info and True or False) + + def __set__(self, instance, value): + instance_logger(instance, echoflag=value) \ No newline at end of file