집 >데이터 베이스 >MySQL 튜토리얼 >Python에서 동적 매개변수화된 SQL 쿼리를 안전하게 실행하려면 어떻게 해야 합니까?
매개변수화를 사용하여 Python에서 동적 SQL 쿼리 실행
Python에서는 SQL 주입 취약점을 방지하기 위해 매개변수화된 SQL 쿼리가 사용됩니다. 권장되는 접근 방식은 cursor.execute()
메서드를 사용하여 쿼리와 매개 변수를 별도로 전달하는 것입니다. 그러나 나중에 실행하기 위해 쿼리를 변수에 저장하려는 경우가 있습니다.
매개변수화된 변수를 사용한 쿼리
변수를 사용하여 매개변수화된 SQL 쿼리를 실행하려면 변수를 cursor.execute()
호출로 풀어야 합니다. cursor.execute()
이 메서드는 쿼리, 선택적 매개변수, 명명된 매개변수의 선택적 사전 등 최대 3개의 매개변수를 허용합니다.
*(별표)를 사용하여 변수 압축 해제
한 가지 방법은 튜플을 단일 인수로 확장하는 별표(*) 연산자를 사용하여 변수의 압축을 푸는 것입니다. 그러나 이를 위해서는 쿼리와 매개변수를 두 개의 별도 목록 또는 튜플로 분할해야 합니다.
<code class="language-python">sql_and_params = ("INSERT INTO table VALUES (%s, %s, %s)", var1, var2, var3) cursor.execute(*sql_and_params)</code>
수동으로 변수 압축 풀기
또는 변수를 올바른 매개변수로 수동으로 압축을 풀 수도 있습니다. 이를 통해 쿼리와 매개변수에 단일 변수를 사용할 수 있습니다.
<code class="language-python">sql = "INSERT INTO table VALUES (%s, %s, %s)" args = (var1, var2, var3) cursor.execute(sql, args)</code>
명시적 변수의 장점
쿼리와 매개변수에 별도의 변수를 사용하면 코드를 더 읽기 쉽고 유지 관리하기가 더 쉽습니다. 또한 변수를 다시 생성할 필요 없이 런타임 시 쿼리나 매개변수를 쉽게 수정할 수 있습니다.
따라서 매개변수화된 SQL 쿼리를 변수에 저장할 수 있지만 일반적으로 가독성과 유연성을 높이기 위해 쿼리와 매개변수를 명시적 변수로 분리하는 것이 선호됩니다.
위 내용은 Python에서 동적 매개변수화된 SQL 쿼리를 안전하게 실행하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!