-1

我在 Tkinter 的列表框中有一行条目,我想要做的是单击列表框中的一行,然后单击删除按钮并从 sqlite3 数据库中删除这行值。这是我的代码中获取列表框中选定行的部分

person = self.listbox1.curselection()

稍后,这是我的代码的一部分,它说从数据库“人”(这是我的表的名称)中删除。

list=c.execute("DELETE FROM people WHERE name =?", (person,))

问题是,我不知道在这一行放什么,你可以看到我试图做什么,但我得到“OperationalError: no such column: name”

此外,列表框中的每一行都包含姓名、年龄、电话号码

conn = sqlite3.connect('phonebook1.db')
            c = conn.cursor()
            conn.execute('''
                CREATE TABLE IF NOT EXISTS people(name TEXT primary key,
            age TEXT, phone TEXT)''')
            c.execute("insert into people values (?, ?, ?)", (item, item2, item3))
            conn.commit()
4

1 回答 1

1

我用完整的代码回答了你如何从 TKinter 和 SQLite3 的列表框中删除一行

如果您对该代码有疑问,您应该继续讨论而不是创建一个新问题。


"OperationalError: no such column: name"

可能您创建了people没有列的表name,现在您必须删除'phonebook1.db'才能重新创建people有列的表name

或者您必须使用 SQL 查询ALTER TABLE ...将列添加name到现有表。


编辑:

顺便一提:

查询"DELETE FROM people WHERE name =?"期望一个元素 - 名称 - 不是元组person 正确:

c.execute("DELETE FROM people WHERE name =?", (person[0]))

查询"DELETE FROM ..."什么也不返回,所以在下面的代码中你没有得到列表

list = c.execute("DELETE FROM ...")
于 2013-11-03T15:49:38.533 回答