Python 来自tkinter checkbotton的SQL查询
我正试图从tkinter的checkbutton创建一个SQL查询。查询条件的数量取决于选中的复选框数量。以下是该计划的初稿:Python 来自tkinter checkbotton的SQL查询,python,sqlite,Python,Sqlite,我正试图从tkinter的checkbutton创建一个SQL查询。查询条件的数量取决于选中的复选框数量。以下是该计划的初稿: class SearchPage(tk.Frame): def __init__(self, parent, controller): tk.Frame.__init__(self, parent) #Search bar self.entree = tk.Entry(self, text='', width=
class SearchPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
#Search bar
self.entree = tk.Entry(self, text='', width=50)
self.entree.grid(row=0,column=0,columnspan=3)
self.entree.bind("<Return>",self.search)
search_button = tk.Button(self, text='Search',
command=self.search)
search_button.grid(row=0,column=3)
#Search Card
search_card_frame = tk.Frame(self)
search_card_frame.grid(row=1,column=0,columnspan=2,sticky='NW')
search_card_label = tk.Label(search_card_frame, text='Search Card:', font=LARGE_FONT)
search_card_label.grid(row=0,column=0,columnspan=3,sticky='W')
self.search_mode = ["Name","Types","Text"]
self.search_var = {}
self.search_button = {}
for index,mode in enumerate(self.search_mode):
self.search_var[mode] = tk.IntVar()
self.search_button[mode] = tk.Checkbutton(search_card_frame, variable=self.search_var[mode],\
onvalue = 1, offvalue = 0, text=mode)
self.search_button[mode].grid(row=1,column=index)
self.search_results = []
self.search_results_list = tk.Listbox(self)#, width=30)
self.search_results_list.grid(row=3, column=0, columnspan=4,sticky='nsew')
def search(self, event=None):
search_entree = self.entree.get()
#card search query
search_query = "SELECT name, type, text FROM cards WHERE "
dict_mode = {"Name":"name", "Types": "type", "Text": "text"}
for mode in self.search_mode:
if self.search_var[mode].get() == 1:
search_query += dict_mode[mode]+" LIKE '%"+search_entree+"%' OR "
search_query = search_query[:-4]
with sgbd.connect('AllPrintings.sqlite') as cnx:
c = cnx.cursor()
self.search_results = c.execute(search_query).fetchall()
我的问题是关于搜索函数的,有没有更好的方法来构建SQL查询?我建议使用一个列表来存储xxxx,如“%yyy%”,然后使用或作为分隔符将它们连接起来,并将结果附加到搜索查询中: 条件=[]存储LIKE子句 对于self.search_模式下的模式: 如果self.search\u var[mode].get==1: 条件.appendf{dict_mode[mode]}类似“{search_entre}%” 搜索\查询+=或.joinconditions
谢谢,真的好多了!