当我运行以下 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))
