我试着在pgadmin中运行以下SQL查询,它工作了:
SELECT <columns>
FROM <tables>
WHERE
date_visited >= '2023-05-26 07:05:00'::timestamp
AND date_visited <= '2023-05-26 07:07:00'::timestamp
AND url LIKE '%/mymodule/api/myurl/%';
我想在django rest endpoint中调用相同的url。所以,我写了如下代码:
with connection.cursor() as cursor:
cursor.execute('''
SELECT <columns>
FROM <tables>
WHERE
date_visited >= '%s'::timestamp
AND date_visited <= '%s'::timestamp
AND url LIKE '%%%s%%';
''', [from_date, to_date, url])
但是它给我的列表索引超出范围错误。我想我在'%%%s%%'
上犯了一个错误。我尝试在原始查询中使用%%
扩展%
。但似乎不起作用。这里出了什么问题?
2条答案
按热度按时间643ylb081#
您可以使用以下命令**
.filter(…)
**[Django-doc]:这里我们可以使用**
__contains
**查找[Django-doc]来进行 * 区分大小写 * 的匹配。uelo1irk2#
预处理语句自动添加引号以防止SQL注入
所以你的代码看起来像