使用Tkinter Optionbox进行MySQL查询

时间:2018-11-22 18:09:25

标签: python mysql tkinter

我正在尝试使用tkinter选项菜单来选择要在表中搜索的变量。但是,由于传递的变量未产生任何结果,因此出现了问题。

这是表格:table

这是SQL语法不正确的证明。 Proof Of SQL

问题是由于字符串变量不正确并返回:

for

没有数据。

当我从OptionMenu中选择一个变量时,没有得到:

[]

我得到:

jhgfds

可以理解,我没有结果。

我尝试在:

上使用这些方法
  • 创建非tkinter变量(`StrEditEvent)
  • ('jhgfds',) 方法
  • re方法

但是这些都不起作用

[2:-3]

任何帮助将不胜感激。

  

print(EventList)

import tkinter as tk
import mysql.connector
root=tk.Tk()
EventList=[]

def OptionChanged(*args):
    EventSQL=("SELECT * FROM events WHERE eventname=%s")
    print(EditEvent.get())
    StrEditEvent=EditEvent.get()
    print(StrEditEvent)
    mycursor.execute(EventSQL,(StrEditEvent,))
    myresults=mycursor.fetchall()
    print(myresults)

# Adding Tracking Variable EditEvent
EditEvent = tk.StringVar()
EditEvent.trace("w", OptionChanged)
#Connecting To My Database
mydb = mysql.connector.connect(
    host="localhost",
    user="root",
    passwd="Cranmore1",
    database="scoutsdatabase"
)
print(mydb)
mycursor = mydb.cursor()

mycursor.execute("SELECT eventname FROM events")
myresults=mycursor.fetchall()
for i in myresults:
    EventList.append(i)
EventToEditOptionMenu = tk.OptionMenu(root,EditEvent,*EventList)
EventToEditOptionMenu.grid(row=1,column=1)


root.mainloop()

2 个答案:

答案 0 :(得分:1)

要以jhgfds的形式获取结果,您需要对其进行迭代,因为它以元组[('jhgfds',), ('uytrds',), ('sadfghjk',), ('jhytre',), ('j',), ('h',), ('q',), ('BBC',), ('BBC',), ('qwed',)]的形式返回查询的结果

您可以使用索引获取所需的特定结果result[0]result[2]

def OptionChanged(*args):
    EventSQL=("SELECT * FROM events WHERE eventname=%s")
    print(EditEvent.get())
    StrEditEvent=EditEvent.get()
    print(StrEditEvent)
    mycursor.execute(EventSQL,(StrEditEvent,))
    myresults=mycursor.fetchall()

    for result in myresults: # iterate over it
        print(result)
        print(result[2])
        print(result[5])

答案 1 :(得分:0)

我终于找到答案了!要从元组中获取字符串,必须使用map()命令。

def OptionChanged(*args):
        EventSQL=("SELECT * FROM events WHERE eventname=%s")
        StrEditEvent=EditEvent.get()
        start,mid,end=map(str,StrEditEvent.split("'"))
        print(mid)
        mycursor.execute(EventSQL,(mid,))
        myresults=mycursor.fetchall()
        print(myresults)

因此('jhgfds',)被转换为jhgfds,因此SQL查询从数据库中查找数据。