我正在尝试从TKinter GUI的树视图中删除SQLite数据库中的一个项目。树视图返回一个类似I002的值。尝试转换为字符串或变量,也没有任何效果。以下是删除函数代码
def Database():
global conn, cursor
conn = sqlite3.connect('pythontut.db')
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS `anno` (mem_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, daytype TEXT, time TEXT, audiofile TEXT)")
def Create():
TIME = CHOUR.get() +":"+ CMIN.get() + ":"+ CSEC.get() + " "+CPERIOD.get()
print(TIME)
if DAYTYPE.get() == "" or TIME == "":
txt_result.config(text="Please complete the required field!", fg="red")
else:
Database()
cursor.execute("INSERT INTO `anno` (daytype, time, audiofile) VALUES(?, ?, ?)", (str(DAYTYPE.get()), str(TIME), str(AUDIO_SELECTION.get())) )
conn.commit()
DAYTYPE.set("")
cursor.close()
conn.close()
txt_result.config(text="Created a data!", fg="green")
def Read():
tree.delete(*tree.get_children())
Database()
cursor.execute("SELECT * FROM `anno` ORDER BY `daytype` ASC")
fetch = cursor.fetchall()
for data in fetch:
tree.insert('', 'end', values=(data[0], data[1], data[2], data[3]))
cursor.close()
conn.close()
txt_result.config(text="Successfully read the data from database", fg="black")
def Delete():
selected_items = tree.selection()
Database()
for selected_item in selected_items:
tree.delete(selected_item)
print(str(selected_item))
cur = conn.cursor()
cur.execute("DELETE FROM anno WHERE mem_id = ?", (selected_items,))
conn.commit()
conn.close()
返回以下错误
cur.execute(sql)
sqlite3.OperationalError: no such column: I002
我正在尝试从TKinter以及SQLite数据库中的树视图中删除选定的项目。
1条答案
按热度按时间vmjh9lq91#
我附上下面的代码,工程.要从选择值,我们需要使用
tree.item(i, "values")[0]
,0表示列。i
保存这个奇怪的值I005
来自树视图位置(如果表中有5个项目,则第5个项目显示为I005
)。使用上面的命令,它会取出表中的值&该值可以存储在变量中(如下所示)。那个奇怪的值,他们称之为iid
(仍然不知道它是什么)。下面是附加的片段,在treeview以及数据库中工作。