Python에서 데이터베이스 쿼리를 처리 할 때 일반적으로 쿼리 문에 변수를 포함해야합니다. 그러나 구문 오류 또는 보안 취약점을 방지하는 방식으로 작동해야합니다.
다음 파이썬 코드를 고려하십시오 :
cursor.execute("INSERT INTO table VALUES var1, var2, var3")
이 코드에서 var1
는 정수, var2
및 var3
는 문자열입니다. 그러나 Python이 이름 var1
, var2
및 var3
이름을 포함 시키려고 할 때 쿼리 텍스트 자체의 일부로 문제가 발생하여 쿼리 무효화가 발생합니다.
이 문제를 해결하기 위해 데이터베이스 API가 제공하는 자리 표시 자 교체 메커니즘을 사용할 수 있습니다. 자리 표시자를 사용하여 코드를 다시 작성하는 방법은 다음과 같습니다.
cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))
이 개선 된 코드에서 :
%s
는 값을 채우는 자리 표시자를 나타냅니다. (var1, var2, var3)
는 삽입 할 값을 포함하는 튜플입니다. 값을 튜플로 전달함으로써 데이터베이스 API는 필요한 변수 탈출 및 참조를 처리하여 데이터베이스 호환성을 보장하고 잠재적 보안 위험을 방지합니다.
단일 매개 변수의 경우 후행 쉼표가있는 튜플이 필요합니다.
cursor.execute("INSERT INTO table VALUES (%s)", (var1,))
또한 보안 취약점을 유발할 수 있고 데이터베이스 API가 지원하지 않기 때문에 String Formatting Operator (%)를 사용하여 변수를 삽입하지 마십시오.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3