Python sqlite3.0错误:数据库已锁定

Python sqlite3.0错误:数据库已锁定,python,sqlite,Python,Sqlite,我正在尝试将列表的所有值插入我的sqlite3数据库。当我使用python交互式解释器模拟这个查询时,我能够正确地将单个值插入DB。但我的代码在使用迭代时失败: ... connection=lite.connect(db_name) cursor=connection.cursor() for name in match: cursor.execute("""INSERT INTO video_dizi(name) VALUES (?)""",(name,)) connect

我正在尝试将列表的所有值插入我的sqlite3数据库。当我使用python交互式解释器模拟这个查询时,我能够正确地将单个值插入DB。但我的代码在使用迭代时失败:

...
connection=lite.connect(db_name)
cursor=connection.cursor()
for name in match:
         cursor.execute("""INSERT INTO video_dizi(name) VALUES (?)""",(name,))
connection.commit()
...

error:cursor.execute("""INSERT INTO video_dizi(name) VALUES (?)""",(name,))
sqlite3.OperationalError: database is locked

有什么方法可以克服这个问题吗?

在代码中的其他地方是否有另一个连接,当您尝试提交失败的操作时,该连接用于启动仍然处于活动状态(未提交)的事务?

因为您的数据库正被另一个进程或连接使用。如果您需要真正的并发性,请使用真正的RDBMS。

,因为可能会发生此错误,因为您已在DBbrowser类型的应用程序中打开site.db或数据库文件,以便在交互式数据库界面中查看。只需关闭它即可正常工作。

仅与sqlite3相关的代码:将sqlite3作为lite db_name=“diziport.sqlite”导入先生,非常抱歉,在关闭交互式解释器(处于活动模式)后,它现在可以正常工作@hasseg如果知道如何修复它而不必重新启动Python,那就太好了。我尝试过cursor.close()和connection.close()、del(游标)、del(连接)。仍然得到这个错误。不一定是真的。Berkeley DB的SQL API既支持易于使用的SQLite API,也支持并发读写操作。您可以在此处阅读:。Sqlite可以通过打开WAL模式和增加超时来支持更好的并发性。有关此错误的详细说明,请参阅以下答案:这是否回答了您的问题?