我知道这可能很愚蠢,但我决定无论如何都要问。
我一直在尝试查询类似的内容:
cursor.execute("select col1, col2 \
from my_tablem \
where afield like '%%s%'
and secondfield = %s
order by 1 desc " % (var1, var2) )
但是我在 like 语句中出错了。它不喜欢额外的 %,我需要它来获得包含第一个 %s 值的所有结果。
想法?
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 注入(inject)攻击的安全漏洞。你真的不应该像这样执行 SQL。
如果你绝对必须在 Django 的 ORM 之外做一些事情,你必须在你的查询中使用绑定(bind)变量,而不是字符串替换。参见 http://docs.djangoproject.com/en/dev/topics/db/sql/#performing-raw-sql-queries .
关于python - 在带有 python (django) 参数的游标/查询中使用 "like",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/643930/