is that because of the "extra" () ?
every time you call db() the where clause gets "encapsulated" in a pair of 
parenthesis.

db(db.auth_user.id>0)(db.auth_user.email==localhost)

and

db((db.auth_user.id>0) & (db.auth_user.email==localhost))

give you different raw strings, but the same exact result.



Il giorno sabato 24 marzo 2012 21:49:58 UTC+1, Limedrop ha scritto:
>
> I've copied this from the bottom of another thread. 
>
>
> The DAL gives different SQL when a query is provided in string format. 
> Is this a bug, or should I not expect this to work? 
>
>
> See the example below, the first SQL works, the second SQL raises an 
> error. 
>
>
> >>>from gluon.dal import Query 
> >>>query = (db.comment.id > 0) & (db.webpage.title == 'FAQ') & 
> (db.comment.page_id == db.webpage.id) 
> >>>query_as_string = str(query) 
> >>>query_from_string = Query(db, query_as_string) 
> >>>print db(query)._select(db.comment.​body) 
>
> SELECT  comment.body FROM comment, webpage WHERE (((comment.id > 0) 
> AND (webpage.title = 'FAQ')) AND (comment.page_id = webpage.id)); 
>
>
> >>>print db(query_from_string)._select(​db.comment.body) 
>
> SELECT  comment.body FROM comment WHERE ((((comment.id > 0) AND 
> (webpage.title = 'FAQ')) AND (comment.page_id = webpage.id))); 
>
>
>
> Why do this?  If the were possible it would enable you to easily save 
> a query in the session.  For example: 
>
> ==Controller 1== 
> query1 = (db.comment.id > 0) & (db.webpage.title == 'FAQ') & 
> (db.comment.page_id == db.webpage.id) 
> session.query = str(query1) 
>
> ==Controller 2== 
> from gluon.dal import Query 
> query2 = Query(db, session.query) 
>
>
> This does NOT work because the DAL gives different SQL for query1 and 
> query2.

Reply via email to