2013-04-11 64 views
0

我使用python和SQL爲客戶帳戶創建數據庫。我正在嘗試更新客戶的詳細信息。我已經完成了我認爲會更新表的內容,但是當我打印內容時沒有任何改變。請你能告訴我哪裏出錯了嗎?Python- SQL更新操作;沒有錯誤,但實際上並沒有更新我的數據庫

def update_Customer(self): 
    # create sqlite connection    
    conn = sqlite3.connect("lanyard.db", timeout=5) 
    c = conn.cursor() 
    # if texfield is empty 
    if self.TextField1.get() !="": 
     if self.TextField2.get() != "": 
      nameChange1 = self.TextField2.get() 
      CusNo = self.TextField1.get() 
      c.execute(""" 
       UPDATE customer 
       SET first_name = 'nameChange1' 
       WHERE customer_id = 'CusNo'""") 
      conn.commit() 
     if self.TextField3.get() != "": 
      nameChange2 = self.TextField3.get() 
      CusNo = self.TextField1.get() 
      c.execute(""" 
       UPDATE CUSTOMER 
       SET second_name = 'nameChange2' 
       WHERE customer_id = 'CusNo'""") 
      conn.commit() 
     if self.TextField4.get() == "": 
      nameChange3 = self.TextField4.get() 
      CusNo = self.TextField1.get() 
      c.execute(""" 
       UPDATE CUSTOMER 
       SET address = 'nameChange3' 
       WHERE customer_id = 'CusNo'""") 
      conn.commit() 
    conn.commit() 
    c.close() 

    # clear input 
    self.TextField1.delete(0, END) 
    self.TextField2.delete(0, END) 
    self.TextField3.delete(0, END) 
    self.TextField4.delete(0, END) 

回答

0

代碼不完整。這個類,我假設有CREATE TABLE函數。 此外,看看

c.execute 
1

你忘parameters返回值:

 nameChange1 = self.TextField2.get() 
     CusNo = self.TextField1.get() 
     c.execute(""" 
      UPDATE customer 
      SET first_name = ? 
      WHERE customer_id = ?""", (nameChange1, CusNo,)) 
+0

nameChange1應該是參數太多。 – Matthias 2013-04-11 13:01:50

+0

@Matthias,是的,在閱讀你的文章之前修復;)dank! – danihp 2013-04-11 13:03:35

+0

我已經嘗試添加這些參數,但遇到了錯誤,嘗試再次嘗試,並得到相同的錯誤。在Tkinter回調中的異常 Traceback(最近一次調用的最後一個): 文件「J:\」文件「C:\ Python32 \ lib \ tkinter \ __ init__.py」,行1399,__call__中的返回self.func(* args) 。大學\ U08007 \ D \ SQL_Lanyard_GUI1.py「,第343行,在update_Customer WHERE customer_id ='CusNo'」「」,(nameChange1,CusNo,)) sqlite3.ProgrammingError:提供的綁定數量不正確當前語句使用0 ,並提供2個。 – user2258597 2013-04-12 22:36:28