2024-05-13 01:18:54 发布
网友
我想在Django ORM中使用WHERE子句查询数据库:
WHERE
WHERE LOWER(col_name) = %s
或者
如何使用QuerySetAPI实现这一点?在
可以使用extra使用sql函数添加自定义where条件:
extra
Author.objects.extra(where=["lower(name) = lower(%s)"], params=['Fabio'])
您希望使用params,而不是直接在查询中嵌入值,从而通过让Django为您转义params来避免SQL注入。在
如果您可以避免对传递的参数使用sql LOWER函数(在我的示例“Fabio”)上,那么可以使用annotate:
LOWER
annotate
注意,your_name.lower()使用的是pythonlower函数,而不是sql函数。在
your_name.lower()
lower
我找不到一种方法将annotate与F()或Lower()(from django.db.models.functions import Lower)一起使用,以将Lower应用于自定义输入,而不是另一个字段。在
F()
Lower()
from django.db.models.functions import Lower
Lower
可以使用
extra
使用sql函数添加自定义where条件:您希望使用params,而不是直接在查询中嵌入值,从而通过让Django为您转义params来避免SQL注入。在
如果您可以避免对传递的参数使用sql
^{pr2}$LOWER
函数(在我的示例“Fabio”)上,那么可以使用annotate
:注意,
your_name.lower()
使用的是pythonlower
函数,而不是sql函数。在我找不到一种方法将annotate与
F()
或Lower()
(from django.db.models.functions import Lower
)一起使用,以将Lower
应用于自定义输入,而不是另一个字段。在相关问题 更多 >
编程相关推荐