优化这段代码conn.execute("update staff set number='%s',Welfare='%s', attendance='%s',contract='%s',assessment='%s',salary='%s',leave='%s' where ID='%s'"%(number,Welfare,attendance,contract,assessment,contract,assessment,salary,leave,ID)) TypeError: not all arguments converted during string formatting >>>
时间: 2023-07-31 09:12:37 浏览: 128
Asp Conn.execute的参数与返回值总结
5星 · 资源好评率100%
可以使用 `?` 占位符的方式来优化这段代码,避免 SQL 注入等安全问题,并且使代码更加简洁和易读。具体的代码如下所示:
```
conn.execute("update staff set number=?, Welfare=?, attendance=?, contract=?, assessment=?, salary=?, leave=? where ID=?", (number, Welfare, attendance, contract, assessment, salary, leave, ID))
```
在这个 SQL 语句中,`?` 占位符会在执行时被实际的变量值所替代,每个变量对应一个占位符,变量值通过一个元组传递给 `execute` 方法即可。这种方式可以避免 SQL 注入攻击,因为用户输入的内容不会被直接拼接到 SQL 语句中,而是被视为参数传递给 SQL 引擎,在执行时进行解析和处理。同时,使用占位符的方式也使代码更加易读和易于维护。
阅读全文