DataScience/SQL

pymysql 오류 valueerror: unsupported format character

사족보행 개발자 2024. 9. 27. 20:28
728x90

 

오류 설명


pymysql을 사용하다 보면, valueerror가 발생한다.

 

 

valueerror: unsupported format character 'Y' (0x59)

 

본 문제는 WHERE 절에서 python의 string formatting에 의해 발생하는데,

아래와 같은 코드를 쓸 때 문제가 발생한다.

where = input()

sql = f"SELECT * FROM TABLE WHERE {where}"

 

이 때 where 절에 따옴표(')나 퍼센트(%)가 들어가기에 발생한다.

( WHERE 절에서 LIKE 구문을 사용하는 경우)

 

해결방법


 

따라서 이를 해결하기 위해선 아래와 같이 수정해주면 된다.

%를 %% 두개로 수정하고, 따옴표를 통일하여 sql 구문의 스트링 따옴표랑 다르게 해주면 된다.

(' 일 경우, "로, "일 경우 '로)

 

where = input().replace("\"", "\'").replace('%', '%%')

sql = f"SELECT * FROM table WHERE {where}"
728x90