2016-02-19 58 views
-2

我已經減少了它以前的數據。現在我正在嘗試更新數據庫中的一件事。 這裏是執行第二個是在另一個文件中我的sqlite代碼裏面有些東西是錯的,但我看不到它

def UpdateItem(self): 
    name1 = self.ItemIDLabelLineEdit.text() 
    name8 = self.ItemNameLineEdit.text() 
    print(name1) 
    print(name8) 
    SqlData.ItemUpdate(self, name1, name8) 

這裏是在另一個文件中

def ItemUpdate(self, name1, name8): 
    db= sqlite3.connect("SQLite database") 
    cursor=db.cursor() 
    print("HEy") 
    print(name1) 
    print(name8) 
    cursor.execute("""UPDATE Items_Table SET Item_Name = """+name8+""" WHERE Item_ID = """+name1+""" """) 

當我運行Python代碼它的第二個功能中的第一個文件的功能說錯誤是name8的值沒有列。我看不到cursor.execute語句中的錯誤。 如果你能幫助 謝謝

+0

首先發布完整的錯誤堆棧 – MaxU

回答

0

一個簡單的插入和更新,我希望它能幫助。

import sqlite3 
db= sqlite3.connect("SQLite database.db") 
cursor=db.cursor() 
cursor.execute("select * from Items_Table") 
print cursor.fetchall() 

name1="3000" 
name8="Number 3000" 
cursor.execute("insert into Items_Table (Item_ID,Item_Name) values(?,?)",(name1,name8)) 

cursor.execute("select * from Items_Table") 
print cursor.fetchall() 

name8="Number Changed from 3000" 
cursor.execute("update Items_Table set Item_name = ? where (Item_ID = ?)",[name8,name1]) 

cursor.execute("select * from Items_Table") 
print cursor.fetchall() 

db.commit() 
db.close() 

輸出:

$ python db.py 
[(u'1000', u'number 1000'), (u'2000', u'number 2000')] 
[(u'1000', u'number 1000'), (u'2000', u'number 2000'), (u'3000', u'Number 3000')] 
[(u'1000', u'number 1000'), (u'2000', u'number 2000'), (u'3000', u'Number Changed from 3000')] 
$ 
1

不要使用字符串連接,使您的查詢 - 這是錯誤的提示,而不是安全。相反,創建一個parameterized query:使用參數爲你的情況

query = """ 
    UPDATE 
     Items_Table 
    SET 
     Item_Name = :name8, 
     Item_Description = :name5, 
     Item_Price = :name3, 
     Item_Cost = :name2, 
     Item_Stock_Level = :name6, 
     Item_ReOderLevel = :name4, 
     Item_Minimum_Stock_Level = :name7 
    WHERE 
     Item_ID == :name1""" 
cursor.execute(query, locals()) 
相關問題