Skip to main content
 首页 » 编程设计

python之python中的SQLite3更新错误

2025年05月04日17qlqwjy

当我运行以下 SQL 语句时出现“Operator error near “?””错误;

    key = 'field_a' 
    value = '01/01/2011' 
    #self.testac = '010101010' 
 
    self.qry.execute('''UPDATE data_base SET ?=? WHERE atnumber = ?''',(key, value, self.testac)) 
    self.qry.commit() 

key 和 value 是根据用户想要编辑的字段动态生成的,这就是为什么 SET 语句有 ?=?

有什么想法吗?

谢谢!

请您参考如下方法:

据推测,? 语法仅用于参数绑定(bind)。也就是说,插入绑定(bind)参数的值,这些参数已转换为经过适当格式化和转义的字符串。它不是一般的字符串替换工具——只需对列名称使用常规字符串替换即可。

例如,您将使用:

key = 'field_a' 
value = '01/01/2011' 
#self.testac = '010101010' 
 
sql = '''UPDATE data_base SET %(key)s=? WHERE atnumber = ?''' % dict(key=key) 
self.qry.execute(sql, (value, self.testac))