2013-06-26 128 views
0

我試着看看這個問題是否已經被問到,它可能有,但我找不到答案。我正在使用pyodbc從python腳本查詢MS SQL Server。Python -SQL字符串轉義通配符

我正在定義一個函數來查詢SQL。查詢字符串有一個'%R_%',它是SQL解釋的通配符,也是'%s',意思是在一個單引號之間的python中放置一個變量。它看起來像這樣:

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功能,像這樣:運用%s的東西后

cursor.execute(QryString, matter) 
1

"%% %s"%("Hello",) 2%的跡象應該成爲一個...

但真的是你應該使用內置的查詢東西東西

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) 

雖然你可能仍然需要爲文字%

%%