2013-06-26 54 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) 

虽然你可能仍然需要为文字%

%%