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
'DataScience > SQL' 카테고리의 다른 글
[프로그래머스] 카테고리 별 도서 판매량 집계하기 - SQL (7) | 2024.11.04 |
---|---|
[PostgreSQL] SQL에서 Join 연산 개념 및 문법 정리 (INNER, RIGHT, LEFT, FULL, CROSS, SELF Join) (1) | 2024.10.22 |
[PostgreSQL] ALTER TABLE 문법 총정리 - 컬럼 추가, 이름 변경, 삭제 등 (0) | 2024.10.18 |
[프로그래머스] MySQL 3월에 태어난 여성 회원 목록 출력하기 (0) | 2024.09.26 |
프로그래머스 SQL SELECT 가장 큰 물고기 10마리 구하기 (0) | 2024.09.20 |