我已经将它从之前减少了。现在我正在尝试更新数据库中的一件事。 这是第一个文件中的函数,它执行另一个文件中的第二个文件
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 :(得分: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')]
$