On 2/28/18 3:18 PM, Frank Millman wrote:
> On 2/28/18 2:53 PM, Richard Damon wrote:
> > On 2/28/18 6:59 AM, Frank Millman wrote:
> > > Hi all
> > >
> > > I am using Python 3.6.0 and sqlite3 3.20.1. I am getting the message
> > > ‘database is locked’ which, from reading the docs, I think is coming from
> > > an SQL_BUSY error.
> > >
> > > It does not behave in the way I expect.
> > Your description, seeming to imply a total order, has an issue. If this
> > is happening in a single thread, then if it uses a second connection to
> > try and insert, that will block and the thread will never get to step 3,
> > so the commit will not happen. You have a dead lock.
> Of course! I should have thought of that.
> I am using python’s asyncio module, so everything is happening in a single
> I understand what is happening now. Thanks very much.
For the record, in case anyone runs into a similar situation, I found an
I try to keep my transactions as short as possible, but with multiple
connections running in the same thread it is possible that one of them starts a
transaction before another one has committed.
To control that, I created an asyncio.Lock(), which is acquired at the start of
the transaction and released after the commit. Problem solved.
I tested with 10 concurrent connections, and they all updated perfectly, with
hardly any slowdown.
sqlite-users mailing list