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에서 가져오기 연결 제목 = "내 제목" query = "SELECT * FROM admin WHERE 이름 LIKE %s" Connection.cursor()를 커서로 사용: cursor.execute(query, (제목,))
이 페이지를 확인해주세요.
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