sqlite3.操作错误:数据库被锁定

13 投票
3 回答
33479 浏览
提问于 2025-04-16 14:59

我想把一个列表里的所有值都插入到我的sqlite3数据库里。当我在Python的交互式解释器中模拟这个查询时,我可以正确地把单个值插入数据库。但是当我用循环来插入时,我的代码就出问题了。

...
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

因为你的数据库正在被其他程序或连接使用。如果你需要真正的同时操作,建议使用一个真正的关系型数据库管理系统(RDBMS)。

1

这个错误可能是因为你在像DBbrowser这样的应用程序中打开了你的网站数据库文件(site.db),这样会导致一些问题。只要把这个应用程序关闭,问题就会解决了。

14

你在代码的其他地方是否还有一个连接,用来开始一个事务,而这个事务在你尝试提交失败的操作时仍然是活跃的(还没有提交)?

撰写回答