À l'aide de “j'aime” dans un curseur/requête avec un paramètre en python (django)
Je sais que cela peut être quelque chose de stupide, mais j'ai décidé de demander de toute façon.
J'ai essayé de requête quelque chose comme:
cursor.execute("select col1, col2 \
from my_tablem \
where afield like '%%s%'
and secondfield = %s
order by 1 desc " % (var1, var2) )
Mais j'obtiens une erreur dans la comme phrase. Il n'aime pas le pourcentage supplémentaire dont j'ai besoin pour obtenir tous les résultats contenant le premier %s valeur.
Idées?
TIA!
Merci pour vos réponses rapides! StackOverflow règles j'ai essayé votre (deux) des suggestions, mais il ne fonctionne pas. Même si j'ai trouvé une solution que je n'arrête pas d'obtenir, à l'aide de: like '%%%%%s%%%%' PD: S. Lott: La requête réelle est de plus en plus complexes, de regroupement et de tri de la requête
n'a pas d'importance comment est complexe. La question est toujours debout. Pourquoi n'êtes-vous pas utiliser l'ORM de Django?
Eh bien, C'est une requête qui utilise deux tables (de grandes tables, de groupe par une clé, puis se joint pour obtenir un autre id. Je pensais que le Groupement ne peut pas être fait dans django w/o l'interrogation de plusieurs fois?
n'a pas d'importance comment est complexe. La question est toujours debout. Pourquoi n'êtes-vous pas utiliser l'ORM de Django?
Eh bien, C'est une requête qui utilise deux tables (de grandes tables, de groupe par une clé, puis se joint pour obtenir un autre id. Je pensais que le Groupement ne peut pas être fait dans django w/o l'interrogation de plusieurs fois?
OriginalL'auteur Juan129 | 2009-03-13
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, pourquoi n'êtes-vous pas utiliser l'ORM de Django pour cela?
Deuxièmement, assurez-vous que vous obtenez le SQL que vous attendez.
Troisième, votre méthode a un trou de sécurité a appelé une Attaque par Injection SQL. Vous devriez vraiment pas faire de SQL comme ceci.
Si vous devez absolument faire des choses hors de l'ORM de Django, vous devez utiliser des variables de liaison dans votre requête, pas de chaîne de substitution. Voir http://docs.djangoproject.com/en/dev/topics/db/sql/#performing-raw-sql-queries.
OriginalL'auteur S.Lott
pouvez hack chaîne de caractères '%' dans la chaîne de recherche?
OriginalL'auteur brobas
J'ai eu un problème similaire. J'ai essayé de rechercher parmi les concaténées nom des champs. Ma requête était quelque chose comme:
Le problème est que le %% étaient en rupture ma requête. La solution que j'ai retrouvé avec a:
OriginalL'auteur Seth Gottlieb
(Postgresql 9.1)
OriginalL'auteur Edu Gasser