On Tue, Jul 23, 2013 at 8:17 AM, Matthew Pounsett
<matt.pouns...@gmail.com> wrote:
>
> Does the ORM allow for filtering by a variable attribute name?  I found this
> discussion using raw SQL:
> https://groups.google.com/d/topic/sqlalchemy/Axa-0thwOR8/discussion
>
> But the suggestion doesn't seem to apply in my case.  Some sample code to
> demonstrate what I'm trying based on the above (I've left out the method
> declarations in the class for brevity):
>
> class Foo(Base):
>     __tablename__ = 'foos'
>
>     id = Column(Integer, primary_key=True)
>     one = Column(String)
>     two = Column(String)
>
> x = Foo("bar", "baz")
> y = Foo("bim", "bam")
> z = Foo("baz", "bar")
>
> session.add(x)
>
> session.add(y)
> session.add(z)
>
>
>
> for attr in ('one', 'two'):
>     print attr
>     print session.query(Foo).\
>             filter(Foo[attr]=='bar').all()
>
>
> I want to see the objects x and z printed out in separate lists at the end.
> I assume there must be an approach for this, but I haven't been able to find
> it.
>
> Does anyone know what I'm missing?
>
> Thanks!
>

You can use the standard python "getattr" function for this:

for attr in ('one', 'two'):
    print attr
    print session.query(Foo).\
            filter(getattr(Foo, attr)=='bar').all()

Hope that helps,

Simon

-- 
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 http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to