SQLITE 和 PYQT5 停止响应 sql 执行

SQLITE and PYQT5 stopping to respond on sql execution

我正在构建一个待办事项应用程序并为其使用了 sql-lite python 数据库。我添加了 clear 命令并且一切顺利,直到我发现当我清除数据库然后尝试查看它时,我的 pyqt 应用程序刚刚停止响应。 数据库代码:

def db(self):
    title = self.textEdit.toPlainText()
    desc = self.textEdit_2.toPlainText()
    conn = sqlite3.connect('mydb.db')
    cur = conn.cursor()
    cur.execute("""CREATE TABLE IF NOT EXISTS task
                           (title text, desc text)
                           """)
    cur.execute("INSERT INTO task VALUES(?,?)", (title, desc))
    conn.commit()
    cur.close()
    conn.close()

查看数据库的代码[在 qt 应用程序中]

def showdb(self):
    conn = sqlite3.connect('mydb.db')
    cur = conn.cursor()
    str = ''
    str2 = ''
    self.tableWidget.setRowCount(50)
    tableindex = 0
    amount = len(cur.execute('SELECT * FROM task').fetchall())
    if amount > 0:
        for x in cur.execute('SELECT * FROM task'):
            str = ''.join(x[0])
            str2 = ''.join(x[1])
            self.tableWidget.setItem(tableindex, 0, QtWidgets.QTableWidgetItem(str))
            self.tableWidget.setItem(tableindex, 1, QtWidgets.QTableWidgetItem(str2))
            tableindex += 1
    else:
        pass

清除数据库的代码[点击后停止响应]

 def delete(self):
    conn = sqlite3.connect('mydb.db')
    cur = conn.cursor()
    cur.execute('DROP TABLE task')
    conn.commit()

问题出在您的删除函数中,删除数据库后您没有再次创建它。这行代码应该可以修复错误。

def delete(self):
  conn = sqlite3.connect('mydb.db')
  cur = conn.cursor()
  cur.execute('DROP TABLE task')
  cur.execute("""CREATE TABLE IF NOT EXISTS task
               (title text, desc text);
             """)
  conn.commit()