On Nov 19, 2012, at 2:44 PM, Ralph Heinkel wrote:
> Hi everybody,
>
> I've banging my head against this for hours ... maybe someone can help?
>
> For a mapped class called 'Person' I'm trying to do something like:
>
> query(Person).filter(Person.status_id.in_('select status_id from
> myschema.mytable where statusname=:n1', n1='hired'))
>
> Obviously this does not work but shows what I want to do. There is no mapping
> or SA table available for 'myschema.mytable' and I cannot provide one. So I
> have to apply raw SQL in the subselect, and I need a binding variable.
> Can anyone help how to wrap the raw SQL into something that works in the
> 'in_'-clause?
first off, there's always a "Table" available, since you can just make one ad
hoc, using either Table with a throwaway MetaData, or you can use the lowercase
versions (sqlalchemy.sql.table, sqlalchemy.sql.column) for something even more
transitory. You only need those names that the SQL statement needs. Since
you have a schema name here, probably need to use Table:
from sqlalchemy import Table, Column, Integer, String, MetaData
mytable = Table('mytable', MetaData(), Column('status_id', Integer),
Column('statusname', String), schema="myschema")
Person.status_id.in_(select([mytable.c.status_id]).where(statusname='hired'))
but with that aside, you can use text():
from sqlalchemy import text, bindparam
Person.status_id.in_(text("select status_id ...",
bindparams=[bindparam('n1', 'hired')]))
and the bind values you can add later too:
from sqlalchemy import text
Person.status_id.in_(text("select status_id ...")).params(n1='hired')
>
> Any help would be very much appreciated.
>
> Thanks,
>
> Ralph
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/sqlalchemy/-/iMQWfRnwrOAJ.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.