使用read_sql_query()传递带通配符LIKE参数时SQL执行报错求助
解决SQL执行失败的问题
你的代码错误在于**pd.read_sql_query的参数传递方式不对**,第三个参数不是用来传SQL占位符的值的,正确的做法是通过params参数传递:
正确代码示例
lookup = '12545%' sql = ''' Select * From table Where Name like ? ''' df = pd.read_sql_query(sql, conn, params=[lookup])
关键说明
- 不需要给
lookup加f-string,普通字符串即可,%作为通配符直接写在字符串里就行,不用转义单引号。参数化查询会自动处理字符串的转义逻辑,同时避免SQL注入风险。 params参数接受列表或元组,把需要替换的占位符值放进去即可(如果有多个占位符,按顺序对应)。- 如果还是提示12545不存在,检查通配符是否符合你的查询需求:比如你要匹配包含12545的内容,就要把
lookup改成'%12545%';当前写法是匹配以12545开头的内容。
内容的提问来源于stack exchange,提问作者HoyaMiner
相关产品推荐
相关产品推荐

