我試圖做的字符串替換不支持的操作數類型爲%:「長」和「統一」
self.cursor.execute("select (1) from eScraperInterfaceApp_scrapeddata where productURL = '%s' limit 1") % URL
錯誤
不支持的操作數%類型:'長」和‘統一’
PRODUCTURL是unicode那麼,如何取代它......有人可以幫我
我試圖做的字符串替換不支持的操作數類型爲%:「長」和「統一」
self.cursor.execute("select (1) from eScraperInterfaceApp_scrapeddata where productURL = '%s' limit 1") % URL
錯誤
不支持的操作數%類型:'長」和‘統一’
PRODUCTURL是unicode那麼,如何取代它......有人可以幫我
您的代碼是這樣做的:
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,))
你並沒有說明具體的數據庫(和DBAPI驅動程序)使用,但PEP 249需要DBAPI支持參數替換,因此這將是更好的使用它而不是Python字符串格式。
cursor.execute(
"select (1) from eScraperInterfaceApp_scrapeddata where productURL = %s limit 1;",
(URL,))
(注意缺少參數佔位符周圍的引號和參數爲1元組)。
我相信通常的語法是使用未知參數的'?'(儘管這可能是DBAPI特有的)。 – nneonneo
我想說,首選的方式應該被稱爲正確的方式,而前者仍然標記爲不正確。 –
請注意,字符串的%格式化已棄用。如果你使用Python 2.6或更高版本,首選的方法是使用'.format()'。 – kqr