본문 바로가기
MySql

MySQL Python MySQLdb : 명명 된 사전으로 매개 변수 쿼리

by 베이스 공부 2021. 1. 24.
반응형

쿼리 매개 변수를 MySQLdb cursor.execute () 메서드에 명명 된 사전으로 전달하여 SQL 주입에서 이스케이프 되도록하고 싶습니다.

이것이 KeyError 를 제공하는 이유를 설명해 주시겠습니까?

>>> c.execute('select id from users where username=%(user)s', {'user':'bob',})
KeyError: 'user'


매개 변수 스타일

인터페이스에서 예상하는 매개 변수 마커 형식화 유형을 나타내는 문자열 상수입니다. 'format' = ANSI C printf 형식 코드 (예 : '... WHERE name = % s'. 매핑 개체가 conn.execute () 에 사용되는 경우 인터페이스는 실제로 'pyformat' = Python 확장 형식 코드를 사용합니다. '... WHERE name = % (name) s'. 그러나 API는 현재 paramstyle에서 둘 이상의 스타일을 지정하는 것을 허용하지 않습니다.

 

해결 방법

 

붙여 넣은 문서 다음에있는 줄이 질문에 답할 수 있습니다.

매개 변수 자리 표시자는 열 값을 삽입하는 데만 사용할 수 있습니다. 그들은 테이블 이름, 명령문 등과 같은 SQL의 다른 부분에는 사용할 수 없습니다.

 

참조 페이지 https://stackoverflow.com/questions/12831408

 

 

반응형

댓글