conditions = [db.User.id==id]
if user_name != ' ':
   conditions.append(db.User.name == user_name)
elif age != ' ':
   conditions.append(db.User.age == age)
elif place != ' ':
   conditions.append(db.User.place == place)

result = db.User.filter(and_(*conditions)).all()

might do the trick (untested).

On Thu, Dec 22, 2011 at 9:53 AM, Sana klh <sana.kl...@gmail.com> wrote:
> Hi Robert Forkel,
>
> You got it right i am trying to have a combination of expression combined in
> and_.
>
> I need to add the attribute only when it is not equal to null.So i tried to
> check if it is not null and then from the expression and pass it to filter
> .But this does not work.
>
> I went through the document but unable to figure out how to do this through
> sql.
>
>
> Thank you
>
> On Thu, Dec 22, 2011 at 12:11 PM, Robert Forkel <xrotw...@googlemail.com>
> wrote:
>>
>> You may want to look at the tutorial [1]. In the code you pasted you
>> are assembling a string to pass to filter. While you can do that (but
>> then it should be proper sql not python!), what you want to do is
>> passing a python expression like db.User.age==age, or a combination of
>> expressions combined using and_, or_, etc.
>>
>> [1]
>> http://www.sqlalchemy.org/docs/orm/tutorial.html#common-filter-operators
>>
>> On Thu, Dec 22, 2011 at 6:34 AM, Sana klh <sana.kl...@gmail.com> wrote:
>> > I am getting the following error
>> >
>> > ProgrammingError: (ProgrammingError) (1064, "You have an error in your
>> > SQL
>> > syntax; check the manual that corresponds to your MySQL server version
>> > for
>> > the right syntax to use near '== 1,db.User.age==23,d' at line 3")
>> >
>> >
>> > Is there any way by which i can generate dynamic query?
>> >
>> > Thank you
>> >   Sana
>> >
>> >
>> >
>> > On Thu, Dec 22, 2011 at 4:40 AM, Jackson, Cameron
>> > <cameron.jack...@thalesgroup.com.au> wrote:
>> >>
>> >> You might get more help if you provide more details. What error are you
>> >> getting?
>> >>
>> >> -----Original Message-----
>> >> From: sqlalchemy@googlegroups.com [mailto:sqlalchemy@googlegroups.com]
>> >> On
>> >> Behalf Of Sana
>> >> Sent: Thursday, 22 December 2011 2:50 AM
>> >> To: sqlalchemy
>> >> Subject: [sqlalchemy] SqlAlchemy dynamic query generation
>> >>
>> >> Hi All,
>> >>
>> >> I am trying to do query based on the user input as follows
>> >>
>> >> condition = 'and_(db.User.id == id'
>> >> if user_name != ' ':
>> >>    condition += ',db.User.name == user_name'
>> >> elif age != ' ':
>> >>    condition += ',db.User.age == age'
>> >> elif place != ' ':
>> >>    condition += ',db.User.place == place'
>> >>
>> >> where = condition+')'
>> >>
>> >> result = db.User.filter(where).all()
>> >>
>> >>
>> >> But Im getting error when i do this.
>> >>
>> >> Is there any way by which i can do this
>> >>
>> >>
>> >> Thank you
>> >>   Sana
>> >>
>> >> --
>> >> 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.
>> >>
>> >>
>> >>
>> >>
>> >> -------------------------------------------------------------------------
>> >> DISCLAIMER: This e-mail transmission and any documents, files and
>> >> previous e-mail messages attached to it are private and confidential.
>> >> They may contain proprietary or copyright material or information that
>> >> is subject to legal professional privilege.  They are for the use of
>> >> the intended recipient only.  Any unauthorised viewing, use,
>> >> disclosure,
>> >> copying, alteration, storage or distribution of, or reliance on, this
>> >> message is strictly prohibited.  No part may be reproduced, adapted or
>> >> transmitted without the written permission of the owner.  If you have
>> >> received this transmission in error, or are not an authorised
>> >> recipient,
>> >> please immediately notify the sender by return email, delete this
>> >> message and all copies from your e-mail system, and destroy any printed
>> >> copies.  Receipt by anyone other than the intended recipient should not
>> >> be deemed a waiver of any privilege or protection.  Thales Australia
>> >> does not warrant or represent that this e-mail or any documents, files
>> >> and previous e-mail messages attached are error or virus free.
>> >>
>> >>
>> >> -------------------------------------------------------------------------
>> >>
>> >> --
>> >> 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.
>> >>
>> >
>> > --
>> > 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.
>>
>> --
>> 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.
>>
>
> --
> 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.

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

Reply via email to