| 43 | |
| 44 | class QueryFormatter(logging.Formatter): |
| 45 | def format(self, record): |
| 46 | if (alias := getattr(record, "alias", None)) in connections: |
| 47 | format_sql = connections[alias].ops.format_debug_sql |
| 48 | |
| 49 | sql = None |
| 50 | formatted_sql = None |
| 51 | if args := record.args: |
| 52 | if isinstance(args, tuple) and len(args) > 1 and (sql := args[1]): |
| 53 | record.args = (args[0], formatted_sql := format_sql(sql), *args[2:]) |
| 54 | elif isinstance(record.args, dict) and (sql := record.args.get("sql")): |
| 55 | record.args["sql"] = formatted_sql = format_sql(sql) |
| 56 | |
| 57 | if extra_sql := getattr(record, "sql", None): |
| 58 | if extra_sql == sql: |
| 59 | record.sql = formatted_sql |
| 60 | else: |
| 61 | record.sql = format_sql(extra_sql) |
| 62 | |
| 63 | return super().format(record) |
| 64 | |
| 65 | |
| 66 | class DebugSQLTextTestResult(unittest.TextTestResult): |