Django执行原生SQL的模糊查询时,百分号(%)替换问题:
1、问题描述
Django 使用 Model.objects.raw(原生SQ) 执行原生SQL一直报错:
IndexError: tuple index out of range 一会说参数不够啥的,一会语法错误啥的等等
排查原因:SQL语句中用到了模糊查询,发现无法替换%,总是与Python的%s冲突
2、解决办法:
使用%%代替%即可
3、示例:
错误示例:
str_sql = """SELECT * FROM db_user WHERE user_name LIKE '%刘%' """
servers = USER.objects.raw(str_sql )
正确示例:
str_sql = """SELECT * FROM db_user WHERE user_name LIKE '%%刘%%' """
servers = USER.objects.raw(str_sql )