2013-08-02 21 views

回答

5

您的代碼是這樣做的:

self.cursor.execute("SQL template") % URL 

它應該是:

self.cursor.execute("SQL template" % URL) 

變化)位置:

self.cursor.execute("select (1) from eScraperInterfaceApp_scrapeddata where productURL = '%s' limit 1" % URL) 

其實更正確的方法是使用曲ERY參數(防止SQL注入):

self.cursor.execute("select (1) from eScraperInterfaceApp_scrapeddata where productURL = %s limit 1", (URL,)) 
+0

我想說,首選的方式應該被稱爲正確的方式,而前者仍然標記爲不正確。 –

+0

請注意,字符串的%格式化已棄用。如果你使用Python 2.6或更高版本,首選的方法是使用'.format()'。 – kqr

2

你並沒有說明具體的數據庫(和DBAPI驅動程序)使用,但PEP 249需要DBAPI支持參數替換,因此這將是更好的使用它而不是Python字符串格式。

cursor.execute(
    "select (1) from eScraperInterfaceApp_scrapeddata where productURL = %s limit 1;", 
    (URL,)) 

(注意缺少參數佔位符周圍的引號和參數爲1元組)。

+0

我相信通常的語法是使用未知參數的'?'(儘管這可能是DBAPI特有的)。 – nneonneo

相關問題