sqlite3.OperationalError:数据库已锁定

时间:2011-04-03 13:20:27

标签: 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,))
connection.commit()
...

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

有什么办法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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