我正在尝试执行动态构建的原始查询.为了确保参数插入有效位置我使用命名参数.
这似乎适用于Sqlite没有任何问题.(我的所有测试都成功了)但是当我对MariaDb运行相同的代码时,它失败了..
一个简单的示例查询:
SELECT u.*
FROM users_gigyauser AS u
WHERE u.email like :u_email
GROUP BY u.id
ORDER BY u.last_login DESC
LIMIT 60 OFFSET 0
Run Code Online (Sandbox Code Playgroud)
参数是:
{'u_email': '%test%'}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是默认语法错误,因为参数未被替换.我尝试使用'%'作为指标,但这导致sql尝试解析
%u[_email]
Run Code Online (Sandbox Code Playgroud)
并返回了一个类型错误.
我正在执行查询,如:
raw_queryset = GigyaUser.objects.raw(self.sql_fetch, self._query_object['params'])
Run Code Online (Sandbox Code Playgroud)
或者在计算时:
cursor.execute(self.sql_count, self._query_object['params'])
Run Code Online (Sandbox Code Playgroud)
两者都在MariaDB上给出相同的错误但在Sqlite上工作(使用':'指示符)
现在我错过了什么?