J'essaie d'envoyer une requête via Python de Django et j'essaie également d'empêcher toute attaque par injection SQL.
Quelqu'un peut-il expliquer comment fonctionne la messagerie ? Par exemple, un exemple de requête LIKE.
"SELECT * FROM admin WHERE nom LIKE '%myTitle%'
Il est facile de configurer des requêtes comme celle-ci.
cursor.execute("SELECT * FROM admin WHERE name= %s", (_id, ));
Mais il est facile de se tromper en annulant le %% dans le texte lors de l'insertion de %s, par exemple.
SELECT * FROM admin WHERE nom LIKE %s
Une fois la requête terminée, elle ressemblera à ceci.
SELECT * FROM admin OÙ nom 'MonTitre'
Il est implémenté correctement, mais je souhaite que %% soit défini entre %s et LIKE.
SELECT * FROM admin WHERE nom '%MyTitle%'
Quelqu'un peut-il expliquer comment résoudre ce problème ?
Mon script simple est le suivant :
à partir de la connexion d'importation django.db titre = "monTitre" query = "SELECT * FROM admin WHERE nom LIKE %s" avec connection.cursor() comme curseur : curseur.execute(requête, (titre,))
Veuillez consulter cette page.
Quel est l'équivalent SQL "LIKE" sur les requêtes Django ORM ?
C'est la méthode ORM de Django.
https://docs.djangoproject.com/en/4.2/topics/db/sql/
C'est ainsi que Django gère les requêtes brutes.
Ce que vous montrez n'est pas du code Django, mais du pur code Python-MySQL.
Avec Python-MySQL, vous pouvez le faire comme vous l'avez fait et il gérera les devis et les problèmes d'injection.
Mais tu devrais.
title_like = f"%{title}%" cursor.execute(query, (title_like,))title_like est une chaîne de correspondance floue.
mysql comme une chaîne qui contient %