私は動的に構築された生のクエリを実行しようとしています。 パラメータが有効な位置に挿入されるように、私は名前付きパラメータを使用しています。Django:生のSQLクエリで名前付きパラメータを使用
これは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
パラメータは次のとおりです。
{'u_email': '%test%'}
エラーをパラメータが置き換えられないため、デフォルトの構文エラーが発生します。 私は指標として「%」を使用してみましたが、これは
%u[_email]
を解析しようとしているSQLをもたらし、それが型エラーを返しました。
私はのようなクエリを実行しています:
raw_queryset = GigyaUser.objects.raw(self.sql_fetch, self._query_object['params'])
またはカウント時:
cursor.execute(self.sql_count, self._query_object['params'])
は、両方が( ':' を使用してインジケータを)Sqliteを上同じMariaDB上の誤りが、仕事を与える
今は何が欠けていますか?
%(u_email)を使用してドキュメントに記載されているように(https://docs.djangoproject.com/en/1.8/topics/db/sql /)は "不完全なフォーマット"のエラーになるbtw –
docsは '%(u_email)s'(接尾辞' s'に気付く) – yedpodtrzitko
TNX !!!!! このコメントを回答として入力すると、回答としてマークすることができます。 –