我能够访问数据库并填充列表框,但无法根据条目字符串中的文本进行搜索。
def find_roster(num_input):
global cursor
cursor.execute("""SELECT num, firstname, surname, duty FROM active WHERE num='%s'""" %(num_input))
rows = cursor.fetchall()
dbi.close()
for results in rows:
rosterList.insert("end", results)
return rows
numLabel=Label(root, text="Employee #")
numLabel.grid(row=0,column=0)
findButt=Button(root, text="Find", width=12, command=find_roster)
findButt.grid(row=1, column=5)
num_input=StringVar()
num_input=Entry(root,textvariable=num_input)
num_input.grid(row=0,column=1)
我已经选择了具体的语法
这是错误:TypeError: find_roster() 缺少 1 个必需的位置参数:'num_input'
我很欣赏任何指示。
最佳答案
只需将 lambda
用于 Tkinter command
回调,并传入 num_input 值作为参数。另外,调整数据库连接和游标对象以适应您的流程并使用 SQL 参数化:
dbi = pymysql.connect(...) # OUTSIDE OF FUNCTION
def find_roster(n):
cursor = dbi.cursor()
cursor.execute("SELECT num, firstname, surname, duty FROM active WHERE num = %s", (n,))
rows = cursor.fetchall()
for results in rows:
rosterList.insert("end", results)
cursor.close()
return rosterList
#... other code
findButt=Button(root, text="Find", width=12, command=lambda: find_roster(num_input))
dbi.close() # OUTSIDE OF FUNCTION
关于python - 如何将选定的数据条目应用到我的 to sql 更新功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47982620/