SqlCte

class SqlCte(alias, query)

A Common Table Expression for use in WITH clauses. Created via SQL.cte(alias, query). Inherits from SqlObj.

Parameters:
  • alias – CTE name string (may include column list, e.g. 'cte_name(col1, col2)').

  • query – A SqlQuery (SQL.select(), SQL.insert(), SQL.update(), or SQL.delete() with RETURNING) for the CTE body.

SQL.cte('active_users',
        SQL.select().from_table('users').column('*')
        .where('active', '=', True))
# active_users AS (
#     SELECT *
#     FROM users
#     WHERE active = %s
# )
# args: [True]
materialized()

Mark the CTE as MATERIALIZED (forces the planner to evaluate it separately).

SQL.cte('expensive', query).materialized()
# expensive AS MATERIALIZED (
#     ...
# )