Are running this within a controller or a background process? In the
executesql case, are you just replacing the select() line or doing
something else? Is only this one table locked or is the entire appadmin
locked?
There should be no difference between
using process=db(db.process.status=="pending").select().first() or
db.executesql('select....'). But there is a difference on where the code is
executed. If the loop:wait is executed in a controller, it will lock the
user session thus appadmin and every access to the application.
On Monday, 28 May 2012 08:34:59 UTC-5, simon wrote:
>
> If I use the DAL select on a sqlite database to select a record then it
> locks the table even if no records are found. If I change it to
> db.executesql(....) then it does not lock the table. For example:
>
> while not process:
> time.sleep(30)
> process=db(db.process.status=="pending").select().first()
>
> If there are no records found the table stays locked so it cannot even be
> viewed in appadmin.
>
> Is this what is expected/desirable? Is there a way to release the lock?
>
>