2012-01-08 56 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