No.
On Jan 3, 9:27 am, pallav <[email protected]> wrote: > Hi Massimo, > > Using raw SQL would defeat the purpose of using the DAL. Are there any > plans to enhance the DAL to include constructs for CASE statements? > > Thanks > Pallav > > On Dec 30 2010, 12:11 pm, mdipierro <[email protected]> wrote: > > > this works for me and this time I tried: > > > >>> db.define_table('a',Field('b')) > > >>> query=db.a > > >>> print db(query)._select("CASE WHEN 1=1 THEN 0 ELSE 1 END"); > > > SELECT CASE WHEN 1=1 THEN 0 ELSE 1 END FROM a WHERE (a.id > 0); > > > >>> rows = db(query).select("CASE WHEN 1=1 THEN 0 ELSE 1 END"); > > > On Dec 30, 9:16 am, Harkirat <[email protected]> wrote: > > > > I already tried the None approach and it didn't work. It returns > > > "TypeError: 'NoneType' object is not callable" > > > > Doing the executesql just defeats the purpose of the DAL. We want to > > > code to be database independent. > > > > I am in no hurry so if you can post a working sample of this whenever > > > you have time that would be great. > > > > Thanks for all your help in this matter. > > > > H. > > > > On Dec 29, 8:12 pm, mdipierro <[email protected]> wrote: > > > > > It is definitively possible. It just that I cannot test it right now. > > > > Try: > > > > > db(query).select(Expression("CASE WHEN 1=1 THEN 0 ELSE 1 END",None)); > > > > > else you can use > > > > > db.executesql("... any raw sql ...") > > > > > the latter is the safe way. Always works. > > > > > On Dec 29, 6:55 pm, Harkirat <[email protected]> wrote: > > > > > > Thanks for the suggestion Massimo! I haven't been able to get it to > > > > > work though. > > > > > That syntax returns an error "TypeError: __init__() takes at least 3 > > > > > arguments (2 given)" > > > > > Tried looking at the Expression class defined in DAL.py for what > > > > > arguments it needs but haven't been able to figure this out. > > > > > Any more suggestions? > > > > > > If this does not work we will most likely have to shift to SQL Alchemy > > > > > and I do like working with the DAL so I am keeping my fingers crossed > > > > > and hoping there is work around for this. > > > > > > Harkirat > > > > > > On Dec 29, 11:56 am, mdipierro <[email protected]> wrote: > > > > > > > You should be able to doL > > > > > > > from gluon.dal import Expression > > > > > > > db(query).select(Expression("CASE WHEN 1=1 THEN 0 ELSE 1 END")); > > > > > > > Nut I never tried. > > > > > > > On Dec 29, 8:37 am, Harkirat <[email protected]> wrote: > > > > > > > > Hi All ! > > > > > > > I am new to web2py and my company is building an > > > > > > > enterprise > > > > > > > level web application that will run on the desktop and also mobile > > > > > > > apps using web2py! So far it has been a gr8 experience working > > > > > > > with > > > > > > > web2py and kudos to all the developers that made such an awesome > > > > > > > framework ! > > > > > > > > I am trying to write some queries in the DAL that require a CASE > > > > > > > statement e.g. > > > > > > > SELECT CASE WHEN 1=1 THEN 0 ELSE 1 END > > > > > > > > Is there a way to write this in the DAL? > > > > > > > > Thanks in advance for your help! > > > > > > > > Harkirat > >

