2012-01-08 5 views
9

내가 같은 파이썬 MySQL의 쿼리를 수행 할 :MySQL의 파이썬 LIKE 와일드 카드

cursor = connection.cursor() 
sql = "select text \ 
     from steps \ 
     where text like '%start%'" 
cursor.execute(sql) 

그러나 %가 와일드 카드로 간주되지 않으며,이 변수를 기대하는 것 같아요. 오류가 발생합니다.

TypeError: not enough arguments for format string 

아무 것도 작동하지 않습니다. 내가 대신 '% 시작 %'

답변

16

난 당신이 파이썬 DB-API를 사용하는 가정의 변수를 사용할 수있는 경우에도 좋은 것입니다.

당신은 %%% 탈출 시도 할 수 있습니다.

예를 들어 여러 가지 방법으로,이 매개 변수를 전달하는 것처럼 : 당신은 "인터페이스 modułu"절에서 on this blog를 전달하는 매개 변수의 다른 방법의 예를 볼 수 있습니다

cursor = connection.cursor() 
sql = """select text 
    from steps 
    where text like %s""" 
cursor.execute(sql, (('%' + 'start' + '%',)) 

은. 모두가 모든 커넥터에서 작동하는 것은 아닙니다.

+1

%%로 이스케이프 처리, 감사 :) 리터럴 문자열을 사용하면 같은 오류가 발생했습니다. – user984003

+0

@ user984003 이상하지만 지금 당장은 테스트 할 수 없습니다. 어쨌든 도움이 되었기 때문에 기쁩니다. – soulcheck

+0

@soulcheck : 문자열 구문은'%'의 해석과 아무 관련이 없습니다 (Bourne Shell이나 Ruby가'$'를 해석하는 것과는 다릅니다). 그래서''% start % '' ''는''% start %''와 정확히 같고''% start % ''와'r'% start % ''와 같습니다. –

관련 문제