python - 将数据库中的数据显示到 tkinter 中不起作用
问题描述
我在这里定义了一个函数,它应该可以正常工作,因为我在其他地方使用了类似的函数但没有给出任何条件(其中..喜欢或正则表达式)并且它在那里工作正常,当我使用正则表达式时它没有给出一个输出。这是为什么?提前致谢 :)
代码:
def search():
log = Toplevel(root)
log.title('View all customers')
def db():
selected = drop.get()
result_win = Toplevel(log)
result_win.title('Search result')
con = mysql.connect(host='localhost', user='root',
password='*****', database='BOOK')
c = con.cursor()
c.execute(f"SELECT * from books where '{selected}' regexp
'{e_sch.get()}';")
result = c.fetchall()
index=0
for index, x in enumerate(result):
num = 0
for y in x:
lookup_label = Label(result_win, text=y)
lookup_label.grid(row=index+1, column=num)
num +=1
con.close()
l1 = Label(result_win,text='Sl.No',font=font_text)
l2 = Label(result_win,text='Title',font=font_text)
l3 = Label(result_win,text='Authors',font=font_text)
l4 = Label(result_win,text='Subject',font=font_text)
l5 = Label(result_win,text='Availablity',font=font_text)
btn_ext = Button(result_win,text='Exit',font=font_text,command=result_win.destroy,borderwidth=2,fg='#eb4d4b')
l1.grid(row=0,column=0,padx=20)
l2.grid(row=0,column=1,padx=20)
l3.grid(row=0,column=2,padx=20)
l4.grid(row=0,column=3,padx=20)
l5.grid(row=0,column=4,padx=20)
btn_ext.grid(row=index+2,columnspan=7,ipadx=540)
global a
l = Label(log,text='Search',font=Font(family='helvetica', size='20'))
drop = ttk.Combobox(log,value=['Search by....','Sl.no','Title','Authors','Subject','Availablity'])
drop.current(0)
l2 = Label(log,text='Enter',font=font_text)
e_sch = Entry(log)
b_sch = Button(log, text='Search book', command=db, font=font_text)
b_ext = Button(log, text='Exit', command=log.destroy, font=font_text)
a = drop.get()
l.grid(row=0,columnspan=3,pady=20)
drop.grid(row=1,column=0,columnspan=3)
l2.grid(row=2,column=0,padx=(20,0))
e_sch.grid(row=2,column=1, padx=30, ipady=5,pady=20)
b_sch.grid(row=3,column=0,columnspan=3,ipadx=200)
b_ext.grid(row=4,column=0,columnspan=3,ipadx=237)
有时我也会收到此错误UnboundLocalError: local variable 'index' referenced before assignment
解决方案
SELECT 语句的语法不正确:
SELECT * from books where '{selected}' regexp '{e_sch.get()}';
应该:
SELECT * from books where `{selected}` regexp '{e_sch.get()}';
字段名称应该用 ` 包围,而不是''
.
推荐阅读
- javascript - 通过 prop 将 vuejs 中的内联 SVG 加载到组件中
- javascript - 按类别筛选
- java - 带有 git 的 scm 插件
- reactjs - 中止更改reactjs的http请求
- react-native - 无法使用 react-native-ble-plx 从 BLE 读取
- firebase - 为什么在 Cloud Firestore 中没有按顺序添加文档?
- react-native - 功能componentDidMount没有在本机反应中触发
- javascript - 三.js根据坐标定位对象
- python-3.x - 使用来自 datareader 的股票数据时,Pandas 错误“没有要绘制的数字数据”
- php - 第三方调用的 RESTful 端点