Hi, I'm using the following snippet to run explain analyize on raw sql
(PostgreSQL, psycopg2).
def print_explain(engine, raw_sql, values):
sql_text = text('EXPLAIN (ANALYZE, BUFFERS) ' + raw_sql)
q = engine.execute(sql_text, values)
lines = q.fetchall()
print('--- EXPLAIN ANALYZE ---')
for l in lines:
print(l[0])
print('--- EXPLAIN END ---')
How can I make it work with Core statements? So far my best idea seems to
be:
def print_explain_stmt(stmt):
raw_sql = str(
stmt.compile(dialect=postgresql.dialect(), compile_kwargs={
"literal_binds": True})
)
sql_text = text('EXPLAIN (ANALYZE, BUFFERS) ' + raw_sql)
q = pg_engine.execute(sql_text)
lines = q.fetchall()
print('--- EXPLAIN ANALYZE ---')
for l in lines:
print(l[0])
print('--- EXPLAIN END ---')
But is this OK? I mean compiling the statement isn't really reliable for
some column types. Can you make this function to use the stmt directly?
--
SQLAlchemy -
The Python SQL Toolkit and Object Relational Mapper
http://www.sqlalchemy.org/
To post example code, please provide an MCVE: Minimal, Complete, and Verifiable
Example. See http://stackoverflow.com/help/mcve for a full description.
---
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.