python – sqlite3.OperationalError:数据库被锁定 – 非线程应用程序

我有一个Python应用程序,它会抛出标准的sqlite3.OperationalError:数据库被锁定错误.我查看了互联网,找不到任何有效的解决方案(请注意,没有多进程/线程正在进行,你可以看到我已经尝试提高超时参数). sqlite文件存储在本地硬盘驱动器上.

以下函数是访问sqlite数据库的众多函数之一,并在第一次调用时运行正常,但在第二次调用时抛出上述错误(在另一个函数调用for循环的一部分):

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()

非常感谢.

解决方法:

您可能特别检查保持读锁定的函数(未完成的光标).这将阻止更新功能的提交.请注意,Python-sqlite问题有一个专用的邮件列表:http://groups.google.com/group/python-sqlite

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能