首页 > 解决方案 > python sqlite3出现错误:sqlite3.OperationalError:数据库被锁定

问题描述

你能帮帮我吗,我写了这段代码:

class Favorits(object):
    def __init__(self, graph_):
        self.graph_ = graph_
        self.conn3 = sqlite3.connect('C:/C/V2.db')

    def add_(self):
        с3 = self.conn3.cursor()
        с3.execute("SELECT COUNT(*) FROM fav")
        t_count = с3.fetchall()
        self.conn3.commit()
        t_count = t_count[0][0]

        to_add_rus = self.graph_.text_rus.get('1.0', 'end')
        to_add_eng = self.graph_.text_eng.get('1.0', 'end')
        to_add_esp = self.graph_.text_esp.get('1.0', 'end')
        с3.execute("INSERT INTO fav VALUES(?,?,?,?)", (t_count + 1,    to_add_rus, to_add_eng, to_add_esp))
        self.conn3.commit()

    def rem_(self):
        c4 = self.conn3.cursor()

        idx = (self.graph_.word_.f_0_to_remove)
        idx = idx[0]
        print(idx)
        c4.execute("DELETE FROM fav WHERE id_=?", (idx,))
        self.conn3.commit()

这是我用来从 db 添加和删除不同行的类(使用 Tkinter 作为 GUI)。所以基本上我试图通过两个不同的游标与同一个数据库建立两个不同的连接(以便能够从中添加和删除单词)。我经常收到这个错误:self.conn3.commit() sqlite3.OperationalError: database is locked

我已经尝试过不同的选项,制作两个不同的光标等。没有任何帮助。

标签: pythontkintersqlite

解决方案


打开后需要关闭数据库连接。否则连接仍然存在,因此数据库认为正在进行编辑,因此会自行锁定。

您可以使用命令断开连接self.conn3.close()


推荐阅读