Python -SQL String Escape通配符

时间:2013-06-26 21:18:16

标签: python sql pyodbc

我试着看看这个问题是否已经被问过,但是我找不到答案。我正在使用pyodbc从python脚本查询MS SQL Server。

我正在定义一个查询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?

谢天谢地。

2 个答案:

答案 0 :(得分:2)

将您要迁移它们的%加倍(即'%%r_%%')。 另外,在cursor.execute函数中插入字符串,如下所示:

cursor.execute(QryString, matter)

答案 1 :(得分:1)

应用%s之后,

"%% %s"%("Hello",)两个百分号应成为一个......

但实际上你应该使用内置的查询东西

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) 

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

执行%