我知道这可能很愚蠢,但我决定无论如何都要问。
我一直在尝试查询类似的内容:
cursor.execute("select col1, col2 \
from my_tablem \
where afield like '%%s%'
and secondfield = %s
order by 1 desc " % (var1, var2) )
但我在类似的句子中遇到了错误。它不喜欢额外的 %,我需要额外的 % 来获取包含第一个 %s 值的所有结果。
Ideas?
TIA!
首先,为什么不使用 Django ORM 来实现此目的?
MyClass.objects.filter( aField__contains=var1, secondField__exact=var2 )
其次,确保您得到了您期望的 SQL。
stmt= "select... afield like '%%%s%%' and secondfield = '%s'..." % ( var1, var2 )
print stmt
cursor.execute( stmt )
第三,您的方法存在一个称为 SQL 注入攻击的安全漏洞。你真的不应该像这样执行 SQL。
如果您绝对必须在 Django ORM 之外执行操作,则必须在查询中使用绑定变量,而不是字符串替换。看http://docs.djangoproject.com/en/dev/topics/db/sql/#performing-raw-sql-queries.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)