python - 在带有 python (django) 参数的游标/查询中使用 "like"

标签 python sql django sql-like database-cursor

我知道这可能很愚蠢,但我决定无论如何都要问。

我一直在尝试查询类似的内容:

 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/

相关文章:

python - 尝试使用 python 2.7 执行 python 3 代码的语法错误

SQL Server - 需要查询工资大于平均工资且小于每个办公室经理的工资

python - 在页面之间移动

python - Django-NoReverseMatch。反转 '',参数 '(2,)' 和关键字参数 '{}' 未找到。 0 种模式已尝试 : []

mysql - 在 MySQL 中使用 IF 语句并使用语句的结果进一步计算

带有逻辑括号和优先顺序的 Django 模板 IF 条件

python - 检查 psycopg2/postgresql 中是否存在 python 值列表

python - 如何检索 Python 类实例的属性的文档字符串?

python - 如何使用 QStyledItemDelegate 绘制()

python - 当我想将数据插入 django 中的模型类时出现错误?