sts-sponsors team mailing list archive
-
sts-sponsors team
-
Mailing list archive
-
Message #08809
[Merge] ~ack/maas-site-manager:query-debug-helper into maas-site-manager:main
Alberto Donato has proposed merging ~ack/maas-site-manager:query-debug-helper into maas-site-manager:main.
Commit message:
add helper to print out rendered queries
Requested reviews:
MAAS Committers (maas-committers)
For more details, see:
https://code.launchpad.net/~ack/maas-site-manager/+git/site-manager/+merge/443729
--
Your team MAAS Committers is requested to review the proposed merge of ~ack/maas-site-manager:query-debug-helper into maas-site-manager:main.
diff --git a/backend/msm/db/_debug.py b/backend/msm/db/_debug.py
new file mode 100644
index 0000000..b330bcc
--- /dev/null
+++ b/backend/msm/db/_debug.py
@@ -0,0 +1,37 @@
+from dataclasses import dataclass
+from pprint import pprint
+import sys
+from typing import (
+ Any,
+ IO,
+)
+
+from sqlalchemy.dialects import postgresql
+from sqlalchemy.sql.elements import ClauseElement
+
+
+@dataclass(init=False)
+class CompiledQuery:
+ """A query compiled for PostgreSQL."""
+
+ sql: str
+ params: dict[str, Any]
+
+ def __init__(self, query: ClauseElement):
+ statement = getattr(query, "statement", query)
+ compiled = statement.compile(
+ dialect=postgresql.dialect() # type: ignore
+ )
+ self.sql = str(compiled)
+ self.params = compiled.params
+
+
+def print_query(query: ClauseElement, file: IO[str] = sys.stderr) -> None:
+ """Print out a SQLAlchemy query, with its parameters."""
+ compiled = CompiledQuery(query)
+ print("---", file=file)
+ print(compiled.sql, file=file)
+ if compiled.params:
+ print("params: ", end="", file=file)
+ pprint(compiled.params, stream=file)
+ print("---", file=file)
Follow ups