2

我正在尝试进行字符串替换

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

错误

% 不支持的操作数类型:“long”和“unicode”

productURL 是 unicode,所以我该如何替换它...有人可以帮我吗

4

2 回答 2

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)

实际上更正确的方法是使用查询参数(以防止 SQL 注入):

self.cursor.execute("select (1) from eScraperInterfaceApp_scrapeddata where productURL = %s limit 1", (URL,))
于 2013-08-02T09:10:48.120 回答
2

您没有指定使用什么数据库(和 DBAPI 驱动程序),但 PEP 249 要求 DBAPI 支持参数替换,因此使用它而不是 Python 字符串格式会更好。

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

(注意参数占位符周围缺少引号,参数为 1 元组)。

于 2013-08-02T09:17:44.160 回答