在我的sqlite代码中出现了问题,但我看不到它

时间:2016-02-19 20:36:58

标签: python 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语句中看到错误。 如果你能帮忙的话 谢谢

2 个答案:

答案 0 :(得分: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())

答案 1 :(得分: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')]
$