2012-01-08 59 views
9

我想做一个Python MySQL查询,如:MySQL的Python的LIKE通配符

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

但%不被视为一个通配符,它​​期待一个变量,我猜。我得到一个错误:

TypeError: not enough arguments for format string 

没有什么似乎工作。这也将是很好,如果我可以使用一个变量,而不是'%start%'

回答

16

我假设你正在使用python db-api。

您可以尝试转义%作为%%

作为将参数有多种方式,例如:

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

可以看到的“接口modułu”部分中传递on this blog参数的另一方法示例。并不是所有的连接器都可以工作。

+1

转义%%作品,谢谢:)使用文字字符串给出了相同的错误。 – user984003 2012-01-08 05:35:17

+0

@ user984003很奇怪,但我现在甚至不能测试它。无论如何都很高兴。 – soulcheck 2012-01-08 05:40:17

+0

@soulcheck:String语法与'%'的解释无关(与Bourne Shell或Ruby解释'$'不同)。因此''“”%start%“”“'与'%start%”'完全相同,它与'%start%'和'r'%start%''相同,等等。 – 2012-01-08 05:41:52