2013-08-05 66 views
1

我跑了一個問題,我不知道如何解決。Python和Mysql的報價和變量

我有這樣一行:

parse = cur.execute("SELECT * FROM testdb WHERE Match(name) AGAINST   ('"The.New.York.Times"' IN BOOLEAN MODE);") 

如果我運行:

parse = cur.execute("SELECT * FROM testdb WHERE Match(name) AGAINST ('"The.New.York.Times"'  IN BOOLEAN MODE);") 

在MySQL控制檯,它的工作原理。但我猜python不喜歡'"The.New.York.Times"'引號。我如何解決這個問題?

而且,我將如何在Python中使該搜索字符串變量? 東西沿線

parse = cur.execute("SELECT * FROM testdb WHERE Match(name) AGAINST ('"%s"' IN BOOLEAN MODE);, var1") 

回答

1

爲了避免SQL注入,並得到適當的轉義,你應該通過查詢變量作爲第二個參數來execute

param = '"The.New.York.Times"' 
cur.execute("SELECT * FROM predb WHERE Match(name) AGAINST (%s IN BOOLEAN MODE)", (param,)) 
+0

該代碼沒有工作,但是如果我刪除了'%s的它做了工作,感謝您的幫助! – tsjk

+0

好的,太好了。我認爲你需要''' – alecxe

+0

通常,你不需要在分析結束時使用分號,也值得閱讀[Python DB API FAQ](http://wiki.python.org/) moin/DbApiFaq)(支持哪個參數類型可能取決於數據庫驅動程序。) – Bruno