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 )
本文讲述了在Django中使用Model.objects.raw执行原生SQL时遇到的模糊查询问题,重点介绍了如何解决%符号与Python语法冲突,通过使用双百分号''来替代单个%实现正确查询。

372

被折叠的 条评论
为什么被折叠?



