我尝试通过从OptionMenu中选择一个选项来触发特定的MYSQL查询来填充Tree!第一次运行应用程序就可以了,它确实可以提取所有内容,并传递变量以构建查询:
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中的第一个应用程序,因此除了尝试在调用函数时进行更改,变量的格式设置(我对日期格式有疑问)之外,我不知道还能尝试什么。正如逐步介绍的那样,我看到查询已更新,但没有进一步执行,并且没有相应地填充Tree。
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
我想通过每次选择OptionMenu项之一时执行新的SQL查询来过滤Treeview对象。
答案 0 :(得分:0)
好的,很抱歉浪费大家的时间。我发现自己可以通过简单地“清除”整个Treeview,然后用新查询的结果“填充”它来解决问题!
Loop实际上试图在已填充的Treeview中添加“已过滤”结果,而不是创建全新的已过滤列表!
所以...
image.focal_sum()