2015-08-28 84 views
0

我想从python 3.4中使用tkinter模块在treeview小部件中的相应列中输出2个不同的sql查询返回值当我在第一列下面定义的运行命令打印所有条目正确,但名称列将在所有行中打印第一个结果的名称,而不是每个行的名称。任何想法做什么即时错误?在python中使用tkinter模块的treeview列中的sql输出

def refreshtrade(): 

     for i in treeview.get_children(): 
      treeview.delete(i) 


      #order number 
     refreshtradein = conn.cursor()     
     refreshtradein.execute("SELECT increment_id FROM mg_ikantam_buyback_order") 

      #first name 
     names =conn.cursor() 
     names.execute("SELECT customer_firstname FROM mg_ikantam_buyback_order")# WHERE increment_id = 'buyback-%s'" %(tradeinentryfield.get())) 

     for n in names: 
      for r in refreshtradein: 
        treeview.insert('',0,r,text = r, values=(n,'Mercedes', 'Purchased', '8-34-15')) 



     refreshtradein.close() 
     conn.close() 

回答

1

为什么你使用两个不同的游标,因此两个嵌套for循环?你知道如何评估嵌套for循环吗?

querycursor = conn.cursor() 
querycursor.execute(SELECT increment_id, customer_firstname FROM mg_ikantam_buyback_order) 

for row in querycursor: 
    print(row[0]) 
    print(row[1]) 

哦,关于你的where子句。永远不要做那样的参数替换。这是很大的安全隐患

here如何正确地做到这一点

+0

感谢您的反馈,并没有即时不知道这样感谢的洞察力。我会试着去理解你的反应,因为我对编码非常陌生,但它对我来说并不直观,但我会以我的结果作出回应。再次感谢 –

+0

我得到一个AttributeError:'元组'对象没有属性'increment_id'错误,当我尝试你的建议 –

+0

感谢人,即时通讯仍然是非常新的明显,我感谢你的帮助。这使得它的输出正是我所需要的。我尝试了非安全风险的SQL查询利用,但我得到一个语法错误,当我把逗号:/ –