Ich versuche, eine rohe Abfrage auszuführen, die dynamisch erstellt wird. Um sicherzustellen, dass die Parameter an der gültigen Position eingefügt werden, verwende ich benannte Parameter.Django: Verwenden von benannten Parametern für eine rohe SQL-Abfrage
Dies scheint für Sqlite ohne Probleme zu arbeiten. (Alle meine Tests erfolgreich) Aber wenn ich den gleichen Code gegen MariaDB laufen bin nicht it ..
Ein einfaches Beispiel Abfrage:
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
Parameter sind:
{'u_email': '%test%'}
Der Fehler Ich bekomme einen Standard-Syntaxfehler, da der Parameter nicht ersetzt wird. Ich habe versucht, ‚%‘ als Indikator verwendet wird, aber dies führte zu SQL versucht
%u[_email]
zu analysieren und eine Art Fehler zurückgegeben.
ich die Ausführung der Abfrage wie:
raw_queryset = GigyaUser.objects.raw(self.sql_fetch, self._query_object['params'])
Oder beim Zählen:
cursor.execute(self.sql_count, self._query_object['params'])
Beide geben den gleichen Fehler auf MariaDB aber die Arbeit auf SQLite (mit dem ':' Indikator)
Nun, was fehlt mir?
mit% (u_email), wie in der Dokumentation angegeben (https://docs.djangoproject.com/en/1.8/topics/db/sql /) führt zu einem "unvollständigen Format" Fehler btw –
die Dokumentation sagt '% (u_email) s' (beachten Sie das Suffix' s') – yedpodtrzitko
TNX !!!!! Wenn Sie diesen Kommentar als Antwort eingeben, kann dies als Antwort markiert werden. –