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

时间:2016-02-25 12:10:33

标签: python sql oop

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()

该错误表明"?"附近存在语法错误。但是我没看到问题所在。

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

非常感谢

1 个答案:

答案 0 :(得分:0)

?字符在其出现的任何位置都不会被替换,只能放置表达式。因此,尝试使用?作为列名是sqlite3语法错误。

您可以使用

query = 'update Item set {} = ? where itemid = ?'.format(self.field)
cursor.execute(query, (self.value, self.ID))

当然,你需要清除self.field注射攻击。