diff -r d4306261ddfb -r 39f777341db4 mytoolkit/mymanager.py --- a/mytoolkit/mymanager.py Thu Mar 07 15:42:47 2013 +0100 +++ b/mytoolkit/mymanager.py Thu Mar 07 18:26:52 2013 +0100 @@ -73,6 +73,7 @@ log_sql = logging.getLogger("mymanager_sql") +log_sql.addHandler(logging.NullHandler()) class MyManagerError(Exception): @@ -108,13 +109,13 @@ try: return super(Cursor, self).execute(query, args) finally: - log_sql.debug(self._executed.decode('utf8')) + self._log_query(query, args) def callproc(self, procname, args=None): try: return super(Cursor, self).callproc(procname, args) finally: - log_sql.debug(self._executed.decode('utf8')) + self._log_query(query, args) def row_dict(self, row, lstrip=None): adjustname = lambda a: a @@ -132,6 +133,24 @@ rows = super(Cursor, self).fetchall() return [self.row_dict(row, lstrip) for row in rows] + def mogrify(self, query, args): + """Get query with substituted args as it will be send to server.""" + if isinstance(query, bytes): + query = query.decode() + if args is not None: + db = self._get_db() + query = query % db.literal(args) + return query + + def _log_query(self, query, args): + name = self.connection.name if hasattr(self.connection, 'name') else '-' + query = self._executed or self.mogrify(query, args) + if isinstance(query, bytes): + db = self._get_db() + charset = db.character_set_name() + query = query.decode(charset) + log_sql.info('[%s] %s' % (name, query)) + class MyManager: