我的sqlite代码内部有问题,但我看不到

2024-04-24 03:19:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我把它比以前减少了。现在我正在尝试更新数据库中的一个东西。 这是第一个文件中的函数,它执行另一个文件中的第二个函数

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的值没有列。我看不出里面的错误游标.执行声明。 如果你能帮忙的话 谢谢


Tags: 文件函数textself数据库dbdef错误
2条回答

不要使用字符串连接来生成查询-这是错误提示,不安全。相反,创建一个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())

一个简单的插入和更新使用参数为您的情况下,我希望它有帮助。你知道吗

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')]
$ 

相关问题 更多 >