2012-02-02 24 views

回答

3

第一個就足夠了;第二個將加倍你的努力,取代例如"\"。你可以自己用

>>> c.execute("SELECT %s, %s", ('"', MySQLdb.escape_string('"'))) 
1L 
>>> c.fetchall() 
((u'"', u'\\"'),) 

所以你看到第二個版本將在"之前產生不必要的\測試。所以第一個是好的。

+0

'((''','\'\\「\''),)'在我的情況下(pymysql,沒有unicode) – 2012-02-02 14:37:06

+0

哦,好的。更糟... – glglgl 2012-02-02 15:28:20

0

只要它不是一個格式化的字符串,他們真的是準備好的語句,你不應該擔心。

它可能會導致比它的價值更多的問題逃脫它兩次。

+1

逃逸兩次**總是**會導致問題。 – glglgl 2012-02-02 14:24:36

3

第一個代碼示例已經對SQL注入非常安全。第二個例子會在數據庫中引起額外的引號,這很可能是而不是你想要的。