Я попытался, выбрав один из вариантов в OptionMenu, чтобы вызвать конкретный запрос MYSQL для заполнения дерева!Когда приложение запускается в первый раз, все в порядке, оно все вытягивает, передает переменные для построения запроса:
SELECT * FROM awp where awp.Order > 1 and awp.date > "1900-01-01" and awp.markerid like "%"
Затем оно должно передавать новые переменные, когда я выбираю что-то из OptionMenu.Это происходит, например, как запрос:
SELECT * FROM awp where awp.Order > 1 and awp.date = "2004-01-20" and awp.markerid like "%"
или:
SELECT * FROM awp where awp.Order = 140526 and awp.date > "1900-01-01" and awp.markerid like "MARK_X4"
после выбора некоторых элементов из OptionMenus, ноTreeview не заполняется новым запросом, и он получает все из базы данных MYSQL!
Это мое первое приложение на python, так что кроме попыток изменить, когда вызывается функция, как форматируются переменные (у меня были проблемы с форматированием даты) Я не знал, что еще попробовать.Шаг за шагом я вижу, что запрос обновляется, но не выполняется дальше, и дерево не заполняется соответствующим образом.
def db_refreshPLAN(self,forder, fdate, fmarker):
if fdate.get() == 'All':
querydate = '1900-01-01'
dateoperator = '>'
else:
querydate = fdate.get()
dateoperator = '='
if fmarker.get() == 'All':
querymarker = '%'
else:
querymarker = fmarker.get()
if forder.get() == 'All':
queryorder = str(1)
orderoperator = '>'
else:
queryorder = forder.get()
orderoperator = '='
dbAWP = mdb.connect("localhost", port=3306, user="root", passwd="Ceres", db="sqltest1")
cursor = dbAWP.cursor()
strquery = str('SELECT * FROM awp where awp.Order ' + orderoperator +
' ' + queryorder + ' and awp.date ' + dateoperator +
' "' + querydate + '" and awp.markerid like "' + querymarker + '"')
print(strquery)
cursor.execute(strquery)
dbAWP.commit()
rows = cursor.fetchall()
cpt = 0
for row in rows:
self.treeplan.insert('', 'end', text=str(cpt), values=(row[1], row[2], row[3], row[4], row[5], row[6],
row[7], row[8], row[9], row[10], row[11], row[12],
row[13], row[14]))
cpt += 1
Я хотел отфильтровать объект Treeview, выполняя новый запрос SQL каждый раз, когда один из элементов OptionMenuвыбран.