【发布时间】:2021-10-09 19:07:24
【问题描述】:
我想创建一个函数,用户可以从数据库中获取用户列表,并可以选择从数据库中删除其中的一个。它看起来像我想要的那样,我将所有项目排成一行,每个项目都有一个删除按钮,它们的名称是正确的。但是该功能似乎没有按我想要的方式工作。如果我单击任何删除按钮,最后一个用户将被删除。我是新手,所以我确定我犯了一个错误,但我不知道在哪里。
def delete():
conn = sqlite3.connect("database.db")
c = conn.cursor()
c.execute("DELETE FROM databasetable WHERE oid = " + str(i[5]))
conn.commit()
conn.close()
conn = sqlite3.connect("database.db")
c = conn.cursor()
c.execute("SELECT *, oid FROM databasetable")
listfromdatabase = c.fetchall()
conn.commit()
conn.close()
for i in listfromdatabase:
label = Label(frameskidlararenamn, text=i[0])
label.pack()
button = Button(frameskidlarareknapp, text="Delete " + str(i[0]), command=delete)
button.pack()
有什么想法吗?
【问题讨论】:
-
"SELECT *, oid FROM databasetable"-->"SELECT * FROM databasetable" -
我不确定我是否理解。如果我写“SELECT * FROM databasetable”,它不会返回 oid,只返回我创建的输入。
-
*--> 表的所有字段 -
你确定这就是它在 sqlite 中的工作方式吗?因为如果我写 * 不会返回 oid,但它会以我写的方式正确返回。我不认为那是问题所在。如果我将列表打印到终端,一切看起来都是正确的。
-
我正在使用 sqlite3。
标签: python database sqlite tkinter