I have a complicated recursive CTE that exists as text()

_complex_sql_ = sqlalchemy.text("""WITH RECURSIVE _foos AS (
    SELECT id
    FROM foo 
    WHERE (id = :id_start AND ...)
    UNION
    SELECT f.id
    FROM foo f
    INNER JOIN _foos _f ON _f.id = f.id
    )
SELECT DISTINCT id FROM _foos""")

I'd like to make this a selectable element that can be joined to ORM 
classes.

The only way I can seem to move forward is with soemthing like this...

    stmt = 
sqlalchemy.text(_complex_sql_).bindparams(id_start=1).columns(sqlalchemy.sql.column('id',
 
sqlalchemy.Integer))

that wraps it in "SELECT id AS id FROM (_complex_sql_)" and fails because 
the subquery needs an alias


    stmt = 
sqlalchemy.text(_complex_sql_).bindparams(id_start=1).columns(sqlalchemy.sql.column('id',
 
sqlalchemy.Integer)).alias(wrapped)

that wraps it in "SELECT id AS id FROM (_complex_sql_) AS wrapped"  and 
works

is there any way to 'unwrap' that without the `SELECT id AS id FROM` stuff 
and just run the raw query?

that form is throwing off one of the settings in the query planner, and 
it's a real pain to work on two versions of this query at once.



-- 
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.

Reply via email to