Python 函数中的查询未执行
我正在尝试创建一个按钮,您可以在其中删除使用trv.bind选择的记录。我可以选择fine,因为我已经尝试在选择时使用print来显示OID,但当我添加删除功能时,它不会执行任何操作,也不会出现任何错误。据我所知,我正在通过OID选择特定的行,但我的函数不会删除。查询未执行 我制作了一个与我的代码相似的示例代码Python 函数中的查询未执行,python,sqlite,tkinter,Python,Sqlite,Tkinter,我正在尝试创建一个按钮,您可以在其中删除使用trv.bind选择的记录。我可以选择fine,因为我已经尝试在选择时使用print来显示OID,但当我添加删除功能时,它不会执行任何操作,也不会出现任何错误。据我所知,我正在通过OID选择特定的行,但我的函数不会删除。查询未执行 我制作了一个与我的代码相似的示例代码 import tkinter from tkinter import * from tkinter import ttk, LabelFrame, StringVar import tk
import tkinter
from tkinter import *
from tkinter import ttk, LabelFrame, StringVar
import tkinter.messagebox
import sqlite3
#cursor
conn = sqlite3.connect('newtest.db')
#cursor is needed for sql functions
c = conn.cursor()
top = tkinter.Tk()
q = StringVar()
t1 = StringVar()
t2 = StringVar()
#this grabs each ID
def getrows(event):
rowid = trv.identify_row(event.y)
item = trv.item(trv.focus())
t1.set(item['values'][0])
t2.set(item['values'][1])
def pdelete():
oid = t1.get()
query = "DELETE FROM products WHERE oid = "+oid
c.execute(query)
conn.commit()
def update(show):
trv.delete(*trv.get_children())
for i in show:
trv.insert("", 'end', values=i)
return show
conn.commit()
def query_database():
query = "SELECT oid, pdesc from products"
conn = sqlite3.connect('newtest.db')
c = conn.cursor()
c.execute(query)
show = c.fetchall()
return show
box4 = LabelFrame(top, text="Products Summary")
box4.pack (fill="both", expand="yes", padx=20, pady=10)
trv = ttk.Treeview(box4, column=(1,2), show="headings", height="20")
style=ttk.Style(trv)
style.configure('Treeview', rowheight=20)
trv.pack(side=LEFT)
trv.heading(1, text="Product ID")
trv.heading(2, text="Product Description")
conn = sqlite3.connect('newtest.db')
query = "SELECT oid, pdesc from products"
c.execute(query)
show = c.fetchall()
update(show)
#deletebutton
btn6 = ttk.Button(box4, text='Delete', command=pdelete)
btn6.pack(side=RIGHT)
#select
trv.bind('<Double 1>', getrows)
top.title("deletetest")
top.geometry("1500x1200")
top.mainloop()
没有带按钮的Sqlite3删除函数。你能不能把范围缩小到python中的按钮不起作用或者sqlite不删除?很抱歉不够清楚。SQlite3没有删除。我试着通过按钮打印OID。因此,我认为C.executequery没有从oid=?、oid的产品中运行try query=DELETE并执行它,您如何验证数据是否被删除?那么您认为SQlite3没有删除吗。因为C.executequery没有运行?在这种情况下,我们可以不再为sqlite操心,您可以将问题和精力集中在未执行的删除查询上。请缩小范围。@CoolCloud抱歉没有澄清。我通过查看数据库中的日期来验证它是否已更改,并且我有一个更新GUI中显示的数据的功能。我尝试了你的建议,但它仍然不会影响数据库。如果没有道理,我很抱歉,我对这些都不在行。