SQLite Forum

What reading wal can result in `BusyError: database is locked`?
Suppose a row is being written while you're trying to read it.  You might get one field from before the change and another from after the change.

Or suppose you are reading a selection of rows and you get some rows from before a change and others from after a change.  You might get an inconsistent picture from half way through a change.

So a database must be locked against reads while it is being updated.