class ResponseTimer(object): """Nearly trivial class, used for tracking how long the page took to create. Properties are `total_time`, `sql_time`, and `sql_queries`. In SQL debug mode, `sql_query_log` is also populated. Its keys are queries; values are dicts of parameters, time, and caller. """ def __init__(self): self._start_time = datetime.now() self._total_time = None self.from_cache = None # SQLAlchemy will add to these using the above event listeners; see # spline.config.environment self.sql_time = timedelta() self.sql_queries = 0 self.sql_query_log = OrderedDict() @property def total_time(self): # Calculate and save the total render time as soon as this is accessed if self._total_time is None: self._total_time = datetime.now() - self._start_time return self._total_time def add_log(self, log): self.sql_query_log.setdefault(log['statement'], []).append(log)
def render_imports(self, model): d = OrderedDict() for col in model.table.columns: if col.server_default: d.setdefault('sqlalchemy', ('text', '_text')) imports = '' for k, v in d.items(): if isinstance(v, tuple): imports += 'from {} import {} as {}\n'.format(k, v[0], v[1]) else: imports += 'from {} import {}\n'.format(k, v) if len(d) > 0: imports += '\n' imports += 'from {} import db\n'.format(self.name) return imports