videos=db(db.video.id>0).select(cache=(cache.ram,3600)) 3600 are seconds and it is the cache time. If you replace the value with 0, it will be re-computed.
On Jul 23, 4:13 am, Adi <aditya.sa...@gmail.com> wrote: > Hi all, > > I have this use-case: > > There is a set of rows being queried from the database. > > videos=db(db.video.id>0).select() > > Now I have three different views (in same controller) where I want to > access these rows (with additional filters), but I want to prevent > multiple db calls. > > def index(): > # use videos here with an additional filter > home_videos = [v for v in videos if v.folder == 'home'] > > def favorites(): > fav_videos = [v for v in videos if v.folder == 'favorites'] > > These views essentially fetch subset of the same dataset and display > them. > > Question: > ------------- > Is there a way to "cache" the first db call "videos = ... " and be > able to access "videos" variable without hitting database again, as > long as this session exists? > > I am not sure if and how I can use global variables here, and will > they reliably persist.