2016-02-19 60 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()) 
相关问题