python - 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
我已经尝试过不同的选项,制作两个不同的光标等。没有任何帮助。
解决方案
打开后需要关闭数据库连接。否则连接仍然存在,因此数据库认为正在进行编辑,因此会自行锁定。
您可以使用命令断开连接self.conn3.close()
。
推荐阅读
- java - 当程序在 JAR 中导出时使用 Sqlite JDBC (Intellij)
- vmware - 使用 ovftool 将 vmdk 转换为 ova
- excel - 如何将多个 Word 文件中的表格复制到 Excel 中的单独工作表中,并将工作表命名为 Word doc 的名称?
- c++ - c++:我可以给一个线程一个新值,而它仍在运行还是我必须先结束它?
- java - Gradle 没有在模拟器上构建应用程序
- api - docker-compose 中分离的前端和 php 后端的问题
- python - 如何在运行 PyQt 应用程序时捕获 main 中引发的异常?
- java - 将对象添加到列表
- c++ - 通过简单的动态链接来违反一个定义规则
- python - sqlalchemy.exc.ProgrammingError:(psycopg2.ProgrammingError)无法适应类型“系列”