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 sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.