Thank you! I'll try the last method, it's more rational I think. 2009/8/7 Sebastian E. Ovide <sebastianov...@gmail.com>
> consider also to change logic... > > instead of calculating 50k age range every time that you need to see that > view, you could add an extra field containing the range... you could do add > an extra field telling when it will change range... then you could calculate > new range only on a fraction of the 50k and update those fields... > > of course if you have 500k or more people you will feel the difference.... > > > > 2009/8/7 Yarko Tymciurak <yark...@gmail.com> > > can you calculate this as you process payment per person? Or is this >> something that is calculated once a month? >> >> The idea is that stored procedures work on the database engine, and can >> sometimes be more efficient, but you can do the same as you describe on the >> selected data. >> >> I think perhaps a nice way to do this is with a database view, where you >> create a stored procedure, and return a non-stored value through the view. >> >> What i mean is the payment would look to web2py "like" a data table >> column, but in reality it would be a calculated value by your view, which >> would use a stored procedure to return the proper value. >> >> This means you would set migrate to False for your web2py table definition >> (you do not want to change the view, once the basic table is setup). >> >> You would create the stored procedure in whatever way is conveneint (most >> likely with a management tool for the database); >> You would create a VIEW in the database which would return all the fields >> of the "native" table, PLUS a field which would be defined as the return of >> your stored procedure on the current row-id, and the appropriate age fields. >> >> In web2py you COULD define an administrative function to make the initial >> "native" table, and then define a second one, migrate=False, and this payout >> field as readonly, and name it for the VIEW you created separately in your >> DB. >> >> That should nicely and transparently give you what you want. >> >> Perhaps others will have other ideas. I have done things like this in the >> past, and it can work rather well. >> >> Regards, >> - Yarko >> >> 2009/8/6 陶艺夫 <artman...@gmail.com> >> >> Thank you for reply. >>> >>> It's a charity project. The city goverment here decided to help old >>> people who aged 70 above financially every month. There are aid standards >>> here: >>> age range : 70-79 80-89 90-94 95-99 100+ >>> aid money: 30 80 150 300 500 >>> You know, every month some people's ages will changed to the next age >>> range. So I need to calculate monthly every person's age to decide how much >>> money (s)he will get. >>> The fields of the people table: >>> name, gender, birth_date, township_id, community_id.... >>> When the calculating work is done, I need to generate an Excel file by >>> xlwt, a town a worksheet, the rows will be grouped by every community. >>> The aged 70+ people here is 50,000+. >>> Any solutions more efficient than python's "For Loop" on a huge DAL >>> records set? >>> >>> Thanks >>> >>> >>> 2009/8/7 mdipierro <mdipie...@cs.depaul.edu> >>> >>> >>>> You can do >>>> >>>> db.executesql('....') >>>> >>>> and pass any sql you want. If you show us what you need to do >>>> specifically perhaps we can suggest a better way. >>>> >>>> Massimo >>>> >>>> On Aug 6, 1:13 pm, 陶艺夫 <artman...@gmail.com> wrote: >>>> > Hi, >>>> > I'm using PostgreSQL, I need to use stored procedure to calculate on >>>> more >>>> > than 50000 records -- according to every people's birthday, figure out >>>> how >>>> > much subsidy (s)he will get. Is this a rational idea? >>>> > I have done calculating by a controller, but it has taken more than 50 >>>> > seconds to get the result. Is a stored procedure helpful for this? And >>>> how >>>> > to do it in DAL? >>>> > >>>> > Thanks. >>>> >>>> >>> >>> >>> >> >> >> > > > -- > > Sebastian E. Ovide > > skype: seezov > > +353 87 6340149 > > Sent from Dublin, Ireland > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web2py@googlegroups.com To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---