try this db['_execute']=lambda f=db._execute,*a,**b: timer(db,lambda:f(*a,**b))
On Dec 22, 9:50 am, vince <[email protected]> wrote: > it freezed and i tried debugging. it seems to be a recursive dead lock > problem. > > def timer(db,f): > import time,os > import gluon.portalocker > myfile=open(os.path.join > (request.folder,'databases','sql.log'),'a') > print "locking" > gluon.portalocker.lock(myfile, gluon.portalocker.LOCK_EX) > t0=time.time() > print "pre f()" > f() > t0=time.time()-t0 > print "unlocking" > gluon.portalocker.unlock(myfile) > myfile.write('%s: %s\n' % (t0,db._lastsql)) > db['_execute']=lambda *a,**b: timer(db,lambda:db._execute(*a,**b)) > > and the output > > locking > pre f() > locking > > -vince > > On Dec 22, 6:20 pm, mdipierro <[email protected]> wrote: > > > grr > > > db['_execute']=lambda *a,**b: timer(db,lambda:db._execute(*a,**b)) > > > On Dec 22, 4:17 am, vince <[email protected]> wrote: > > > > db._execute=lambda *a,**b: timer(db,lambda:db._execute(*a,**b)) > > > File "gluon/sql.py", line 305, in __setattr__ > > > raise SyntaxError, 'Object exists and cannot be redefined' > > > SyntaxError: Object exists and cannot be redefined > > > > On Dec 22, 5:43 pm, mdipierro <[email protected]> wrote: > > > > > db=SQLDB(...) > > > > def timer(db,f): > > > > import time,os > > > > import gluon.portalocker > > > > myfile=open(os.path.join > > > > (request.folder,'databases','sql.log'),'a') > > > > gluon.portalocker,lock(myfile, gluon.portalocker.LOCK_EX) > > > > t0=time.time() > > > > f() > > > > t0=time.time()-t0 > > > > gluon.portalocker,unlock(myfile) > > > > myfile.wriite('%s: %s\n' % (t0,db._lastsql) > > > > db._execute=lambda *a,**b: timer(db,lambda:db._execute(*a,**b)) > > > > > On Dec 22, 2:54 am, vince <[email protected]> wrote: > > > > > > db._lastsql only record the last sql query right? is that any easy way > > > > > to log all the sql query it's executing to a file like sql.log does > > > > > for table update? i think it's really useful for preference fine tune. > > > > > > -vince > > > > > > On Dec 22, 4:26 pm, mdipierro <[email protected]> wrote: > > > > > > > Will think about it but for now: > > > > > > > def timer(myfile,db,f): > > > > > > import time > > > > > > t0=time.time() > > > > > > f() > > > > > > t0=time.time()-t0 > > > > > > myfile.wriite('%s: %s\n' % (t0,db._lastsql) > > > > > > > myfile=open('mylogfile.log','w') > > > > > > rows=timer(myfile,db,lambda:db(db.table.id>0).select()) > > > > > > > Massimo > > > > > > > On Dec 22, 1:04 am, Jonathan Benn <[email protected]> wrote: > > > > > > > > Hi, > > > > > > > > On Dec 22, 4:52 am, vince <[email protected]> wrote: > > > > > > > > > also is it possible to enable logging for all SQL query > > > > > > > > execution? > > > > > > > > Logging with a timer included would be really handy. > > > > > > > > Sincerely, > > > > > > > > --Jonathan --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py Web Framework" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---

