Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数中的查询未执行_Python_Sqlite_Tkinter - Fatal编程技术网

Python 函数中的查询未执行

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

我正在尝试创建一个按钮,您可以在其中删除使用trv.bind选择的记录。我可以选择fine,因为我已经尝试在选择时使用print来显示OID,但当我添加删除功能时,它不会执行任何操作,也不会出现任何错误。据我所知,我正在通过OID选择特定的行,但我的函数不会删除。查询未执行

我制作了一个与我的代码相似的示例代码

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中显示的数据的功能。我尝试了你的建议,但它仍然不会影响数据库。如果没有道理,我很抱歉,我对这些都不在行。