python sqlite3获取错误:sqlite3.OperationalError:数据库已锁定

时间:2018-07-31 07:01:32

标签: python tkinter sqlite

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

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:数据库已锁定

我已经尝试过differend选项,可以使用两个不同的游标,等等。

1 个答案:

答案 0 :(得分:0)

打开数据库连接后,需要关闭它。否则,连接将持续存在,因此数据库认为正在进行编辑,因此将其锁定。

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