2013-06-26 2 views
0

나는 아마도이 질문을 받았는지를 보았지만 답을 찾을 수 없었다. pyodbc를 사용하여 python 스크립트에서 MS SQL Server를 쿼리하고 있습니다.파이썬 -SQL 문자열 이스케이프 와일드 카드

SQL을 쿼리하는 함수를 정의하고 있습니다. 질의 문자열은 SQL에서 해석 할 와일드 카드를 의미하는 '% R_ %'와 파이썬에서 변수를 작은 따옴표로 묶는 '% s'를 모두 가지고 있습니다.

def numcust(matter): 
    QryString = """ 
    select count(distinct user_id) 
    from dbo.tbl_case_details 
    where request like '%r_%' 
    and project_id in 
     (
     select distinct project_id 
     from dbo.tbl_projects 
     where matter_number = '%s' 
     ); 
    """ % matter 
    cursor.execute(QryString) 
    row = cursor.fetchone() 
    return row[0] 

r_의 와일드 카드를 어떻게 이스케이프 처리하여 성공적으로 SQL에 전달할 수 있습니까?

감사합니다.

답변

1

% (즉, '%%r_%%')을 두 번 탈퇴하십시오. ...

cursor.execute(QryString, matter) 
1

"%% %s"%("Hello",) 2% 기호는 %의 물건을 적용한 후 하나가되어야

을하지만 정말 당신은 쿼리에 내장 된 사용한다 : 또한 , 그래서 같이 cursor.execute 함수에서 문자열을 보간 물건 물건

QryString = """ 
select count(distinct user_id) 
from dbo.tbl_case_details 
where request like '%r_%' 
and project_id in 
    (
    select distinct project_id 
    from dbo.tbl_projects 
    where matter_number = '%s' 
    ); 
""" 
cursor.execute(QryString,matter) 

당신은 여전히 ​​그대로 %

에 대한 %%을해야 할 수도 있지만