2013-04-11 1 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

+0

@ Matthias, да, исправлено, прежде чем читать сообщение;) dank !! – danihp

+0

Я уже пытался добавить эти параметры, но получил ошибку, попробовал снова, как вы это сделали, и получил ту же ошибку. Исключение в обратном вызове Tkinter Traceback (последний последний вызов): Файл «C: \ Python32 \ lib \ tkinter \ __ init__.py», строка 1399, в __call__ return self.func (* args) Файл «J: \ Университет \ U08007 \ D \ SQL_Lanyard_GUI1.py ", строка 343, в update_Customer WHERE customer_id = 'CusNo'" "", (nameChange1, CusNo,)) sqlite3.ProgrammingError: Неправильное количество привязок. , и есть 2 поставленных. – user2258597

Смежные вопросы