Django の Python を介してクエリを送信しようとしています。また、SQL インジェクション攻撃を防止しようとしています。
誰かがメッセージングがどのように機能するかを説明できますか?たとえば、LIKE クエリの例です。
"SELECT * FROM admin WHERE name LIKE '%myTitle%'
このようなクエリを構成するのは簡単です。
cursor.execute("SELECT * FROM admin WHERE name= %s", (_id, ))
;
ただし、%s を挿入する場合など、テキスト内の %% を取り消してしまうなど、間違いを犯しやすくなります。
SELECT * FROM admin WHERE name LIKE %s
クエリが完了すると、次のようになります。
SELECT * FROM admin WHERE name 'MyTitle'
正しく実装されていますが、%sとLIKEの間に%%を設定したいと考えています。
SELECT * FROM admin WHERE name '%MyTitle%'
誰かこの問題の解決方法を説明してもらえますか?
私の簡単なスクリプトは次のとおりです。
django.db インポート接続から title = "私のタイトル" クエリ = "SELECT * FROM admin WHERE name LIKE %s" connection.cursor() をカーソルとして使用: カーソル.実行(クエリ, (タイトル,))
こちらのページをご確認ください。
Django ORM クエリで同等の SQL ''LIKE'' とは何ですか?
これが Django の ORM の方法です。
https://docs.djangoproject.com/en/4.2/topics/db/sql/
これは、Django が生のクエリを処理する方法です。
リーリーあなたが示しているのは Django コードではなく、純粋な Python-MySQL コードです。
Python-MySQL の場合は、上記の方法で実行でき、引用符とインジェクションの問題が処理されます。
しかし、そうすべきです。
リーリーtitle_like はあいまい一致文字列です。
mysql のような %
を含む文字列