Python(Mysql)参数化SQL查询报错:Not all parameters were used in the SQL statement
错误原因分析与解决方法
错误原因
你调用read_sql时,params参数传入的是集合{'value', depart_id},但SQL语句中使用的是命名占位符%(value)s,这种占位符要求params必须是字典类型(键值对形式)。集合是无序且无键值映射关系的,数据库引擎无法将depart_id关联到SQL里的%(value)s占位符,因此报错提示参数未被使用。
解决方法
将params的集合改为字典,确保键'value'对应值depart_id,即可正确匹配SQL中的命名占位符。
修正后的代码:
users_from_cur_depart = sql.read_sql( ('SELECT users.Name, users.Secname, users.Surname, tests.Name, results.Result, results.curdate FROM' ' users JOIN results ON users.chatId = results.chatId JOIN tests ON results.testId = tests.id WHERE users.otdel = %(value)s'), self.connection, params={'value': depart_id})
内容的提问来源于stack exchange,提问作者Fuonder
相关产品推荐
相关产品推荐

