Thanks MB, that helps me out. I hadn't considered the text portion of the WHERE.
The thing is, I'm using WITH RECURSIVE, which gets me a Common Table Expression (CTE) that represents a folder hierarchy. I want to then query my entity, apply any filters and make sure my ID appears in the CTE. Does that make sense? Here's the pseudo code of what I want to do and you can tell me if it's possible. sharedFolder = "WITH RECURSIVE q (.....)" entity = session.query(Entity).filter(Entity.value > 100).filter(in_(Entity.id,sharedFolder)).first() Does that make any sense at all? Basically, I just need to apply the CTE to my query and filters so I can return the hydrated entity if it passes the security check done in the WITH RECURSIVE statement. On Mar 29, 4:55 pm, Michael Bayer <mike...@zzzcomputing.com> wrote: > On Mar 29, 2011, at 3:33 PM, Corey Coogan wrote: > > > > > > > > > > > I posted this to Stack Overflow without any luck. Seeing that MB > > hangs around here, this should be the first place I try. > > > I'm using SA 0.6.6, Python 2.66 and Postgres 8.3. > > > I have certain queries which require somewhat complex security check > > that can be handled with a WITH RECURSIVE query. What I'm trying to do > > is combine a textual query with a query object so I can apply filters > > as necessary. > > > My original thought was was to create my text query as a subquery and > > then combine that with the user's query and filters. Unfortunately, > > this isn't working. > > > subquery = session.query(sharedFilterAlias).\ > > from_statement(sharedFilterQuery).subquery() > > This results in this error: AttributeError: 'Annotated_TextClause' > > object has no attribute 'alias' > > > Is there anyway to combine a textual query with SQLAlchemy's query > > object? > > > I just need to apply the Query and filter to my text query with > > something like: where Entity.id in (textQueryResult). > > Its not clear what SQL you'd be looking for when you say > from_statement().subquery(). Anything can be in text(), so SQLA can't > generically select from it - theres no SQL parser so it doesn't know what > columns would be present inside of it to attach to the .c. collection on an > Alias object. > > Typically its better to not use pure text(), if you're looking to have a .c. > collection, and to just put your string based stuff in the WHERE clause of a > select() which is usually where the elaborate stuff is, that is > select().where("string stuff") or query.filter("string stuff"). select() is > a little more open ended than Query here in that you can send strings to > select_from() and others too. > > from sqlalchemy import * > > s = select(["a", "b"]).select_from("hoho").where("x=5") > print s > > print select([s.c.a, s.c.b]) > > SELECT a, b > FROM hoho > WHERE x=5 > SELECT a, b > FROM (SELECT a, b > FROM hoho > WHERE x=5) > > > > > > > > > > > -- > > You received this message because you are subscribed to the Google Groups > > "sqlalchemy" group. > > To post to this group, send email to sqlalchemy@googlegroups.com. > > To unsubscribe from this group, send email to > > sqlalchemy+unsubscr...@googlegroups.com. > > For more options, visit this group > > athttp://groups.google.com/group/sqlalchemy?hl=en. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.