On Tue, Oct 14, 2008 at 11:59 AM,  <[EMAIL PROTECTED]> wrote:
>
> this is somewhat frequent question, lookup the group in the past if
> anyone has something usable.
>
> maybe something like
>  query(cls).filter(
>     or_(*[column == value for column in alternatives] ))
> if many values, use column.in_(values) instead of ==
>
> alternatives can come from yourtable.columns or
>  classmapper( yourclas).iterate_properties.
>
> things to check:
>  - types, e.g. comparing strings and integers may fail or succeed
>  - primary_key = set( c.key for c in class_mapper( cls).primary_key )
>  - relations/references maybe also be checked via .has/.any
>    e.g. references = [ p for p in
> classmapper(yourclass).iterate_properties
>       if (p not in primary_key
>        and (not isinstance( p, PropertyLoader)   #not a relation
>        or p.use_list == False ))     #or a singular reference
>    ]
> these above are just for example, do your own filtering
>
Thanks for this it got me going to where I wanted, now I'm a bit lost
on how to extract that into a function. Ideally I want a function that
will return a value I can put into the filter clause but it seems to
be expecting code not an object. How can I write a function to take
care of the branching you say below. Something along the lines of.
  query(cls).filter(
     or_(*[build_clause(column,value) for column in alternatives] ))


> ciao
> svil
>
> On Tuesday 14 October 2008 20:26:16 Jorge Vargas wrote:
>> Hi,
>>
>> I'm trying to implement a "simple search" field in my application
>> and I was wondering which will be the best way to implement it on
>> SQLAlchemy. I have googled around and found several partial
>> solutions but none of them convince me of being the right way.
>>
>> My use case is the following. I got a textfield search box which
>> will post a set of words, my webapp is to take those words and do a
>> query in *any* field of the corresponding table, and it is to say
>> within just one table. For example I got a User class that has
>> first_name,last_name,address_fields. And I ran a query for "John
>> Thompson", that will bring me back a list of user objects where any
>> of the following is valid, "John" in first_name, "John" in
>> last_name, "John" in address, "Thompson" in first_name, "Thompson"
>> in last_name, "Thompson" in address_field.
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to