为什么这个python类方法不起作用?(它使用SQLite3)

为什么这个python类方法不起作用?(它使用SQLite3),python,sql,oop,Python,Sql,Oop,错误表明“?”附近有语法错误,但我不知道问题出在哪里 注意:这是一个具有完全定义属性的类的方法 非常感谢,?字符不会被替换到它出现的每一个地方,只有在可以放置表达式的地方。因此,尝试使用?作为列名是sqlite3语法错误 你可以用 def update_data(self): db = sqlite3.connect("SQLite database") cursor = db.cursor() cursor.execute("""UPDATE Item SET ? =

错误表明“?”附近有语法错误,但我不知道问题出在哪里

注意:这是一个具有完全定义属性的类的方法


非常感谢

字符不会被替换到它出现的每一个地方,只有在可以放置表达式的地方。因此,尝试使用
作为列名是sqlite3语法错误

你可以用

def update_data(self):

    db = sqlite3.connect("SQLite database")
    cursor = db.cursor()
    cursor.execute("""UPDATE Item SET ? = ? WHERE itemid = ? """,(self.field, self.value, self.ID))
    db.commit()
    cursor.close()

当然,对于注入攻击,您需要清除
self.field

self.field、self.value和self.ID的值是什么样的?它们是字符串和正确的输入值。我已经通过替换这些值来测试了这些值,我会使用属性进行输入,这些值本身就在execute sting中,并且它已经工作了。我只需要它来处理instead中的属性,我想如果输入来自外部源,您必须使用str.format并验证输入,比如
cursor.execute(““更新项目集{}=?其中itemid=?”)。format(self.field,(self.value,self.ID))
非常感谢,我没有意识到这一点
query = 'update Item set {} = ? where itemid = ?'.format(self.field)
cursor.execute(query, (self.value, self.ID))