sqlite3.OperationalError: database is locked - non-threaded application

Posted by James C on Stack Overflow See other posts from Stack Overflow or by James C
Published on 2010-04-02T21:14:40Z Indexed on 2010/04/03 23:53 UTC
Read the original article Hit count: 219

Filed under:
|
|
|

Hi,

I have a Python application which throws the standard sqlite3.OperationalError: database is locked error. I have looked around the internet and could not find any solution which worked (please note that there is no multiprocesses/threading going on, and as you can see I have tried raising the timeout parameter). The sqlite file is stored on the local hard drive.

The following function is one of many which accesses the sqlite database, and runs fine the first time it is called, but throws the above error the second time it is called (it is called as part of a for loop in another function):

def update_index(filepath):
    path = get_setting('Local', 'web')
    stat = os.stat(filepath)
    modified = stat.st_mtime
    index_file = get_setting('Local', 'index')

    connection = sqlite3.connect(index_file, 30)
    cursor = connection.cursor()
    head, tail = os.path.split(filepath)
    cursor.execute('UPDATE hwlive SET date=? WHERE path=? AND name=?;', (modified, head, tail))
    connection.commit()
    connection.close()

Many thanks.

© Stack Overflow or respective owner

Related posts about python

Related posts about sqlite