【发布时间】:2019-12-08 14:57:55
【问题描述】:
我正在尝试将文本输入字段中的输入获取到 SQL 中的表中。但是,当我插入该值时,我的数据库中看不到任何结果。我没有收到任何错误,所以我似乎找不到错误。
#place the text entry fields
global firstname
global lastname
global mark__
global targetgrade
firstname = Entry(self, width = 15, bg = "white")
firstname.grid(row = 1, column=1, padx =5, pady = 5)
lastname = Entry(self, width = 15, bg = "white")
lastname.grid(row = 2, column=1, padx =5, pady = 5)
mark__ = Entry(self, width = 15, bg = "white")
mark__.grid(row = 3, column=1, padx =5, pady = 5)
targetgrade = Entry(self, width = 15, bg = "white")
targetgrade.grid(row = 4, column=1, padx =5, pady = 5)
#Buttons to navigate
button1 = tk.Button(self, text = "Submit",
command = lambda:controller.show_frame(Submit) )
button1.grid(row = 8 , column= 0)
button2 = tk.Button(self, text = "Proceed",
command = lambda:controller.show_frame(ProceedToAnalysis) )
button2.grid(row = 8, column = 1)
类提交(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
label = tk.Label(self, text = "Entry Submitted", font = LARGE_FONT)
label.grid(pady = 10, padx = 10)
button1 = tk.Button(self, text = "Back to Home",
command = lambda:controller.show_frame(StartPage) )
button1.grid(row = 8 , column= 0)
button2 = tk.Button(self, text = "Proceed",
command = lambda:controller.show_frame(ProceedToAnalysis) )
button2.grid(row = 8, column = 1)
#inserting into database
global firstname
global lastname
global mark__
global targetgrade
first = firstname.get()
last= lastname.get()
mark = mark__.get()
target_grade = targetgrade.get()
percentage =0
grade = "Not yet declared"
cur.execute("INSERT INTO class (first, last, mark, target_grade, percentage,grade) VALUES (?,?,?,?,?,?)",(first,last,mark,target_grade,percentage,grade))
conn.commit() #inserting the values in the database
firstname.delete(0,END) # clearing the entry after the user has inputted data
lastname.delete(0,END)
mark__.delete(0,END)
targetgrade.delete(0,END)
firstname.focus_set()
我已经完成了另一个版本,它具有相同功能的不太复杂的 tkinter 代码,并且似乎按应有的方式添加到数据库中。我对这段代码做了同样的事情,但它似乎不起作用。提前谢谢你:)
#my previous code which works
def submit():
first = firstname.get()
last= lastname.get()
mark = mark__.get()
target_grade = targetgrade.get()
percentage =0
grade = "Not yet declared"
cur.execute("INSERT INTO class (first, last, mark, target_grade, percentage,grade) VALUES (?,?,?,?,?,?)",(first,last,mark,target_grade,percentage,grade))
conn.commit() #inserting the values in the database
...
复制评论:我试过了
def insertintosql(first,last,mark,target_grade,percentage,grade): with conn: cur.execute("INSERT INTO class (first, last, mark, target_grade, percentage,grade) VALUES (?,?,?,?,?,?)", (first,last,mark,target_grade,percentage,grade) )
【问题讨论】:
-
在
def __init__中执行cur.execute(...将不起作用,因为def __init__仅在实例化时执行一次。将其移至 own 函数,例如def insert(.... -
我对这个很陌生,你介意给我一个先机吗?我试过 def insertintosql(first,last,mark,target_grade,percentage,grade): with conn: cur.execute("INSERT INTO class (first, last, mark, target_grade, percent,grade) VALUES (?,?, ?,?,?,?)",(first,last,mark,target_grade,percentage,grade))
-
你被误导了,你的问题不是
SQL声明。你不明白OOP __init__的工作原理。 请确认:您点击.Button(self, text = "Submit",并期望def __init__中的.execute("INSERT ...被执行。 -
是的,应该是这样的
标签: python sql user-interface tkinter