2017-05-05 1 views
1

Linux 및 Python 2.7에서 [Water] Meter Data Management 시스템을 실행 중입니다. 나는 this 같은 게시물을 읽고있다.3.x 이전 Python에 대한 적절한 SQL 쿼리

%s과 관련된 안전하지 않은 메서드를 사용하지 않고 쿼리를 구성하기위한 적절한 안전 구문은 무엇입니까?

rc = test_cur.execute("select m.* from meter m where m.acct_no = '%s' ", acct_no)

나는 점점 오전 오류에 따라 여러 가지 방법을 시도했습니다.

답변

2

%s 여기 은 자리 표시자를 형식화하는 파이썬 문자열을 나타내지 않습니다. 이 경우 MySQL 드라이버 query parameterization placeholder입니다. 자리 표시자는 execute()으로 별도의 인수로 전달 된 매개 변수로 데이터베이스 드라이버로 대체됩니다. 이것은 일반적인 문자열 형식화와 다릅니다.

rc = test_cur.execute("select m.* from meter m where m.acct_no = %s", (acct_no,)) 

이 또한주의 튜플에 둘러싸인 acct_no : -이 경우에 %s 따옴표가 필요하지 않습니다

참고 따옴표가 매개 변수 유형에 따라 필요한 경우 드라이버가 자동으로 결정합니다.

+0

감사합니다. 도움이되었습니다. – octopusgrabbus