我有以下sql:
sql = '''SELECT DISTINCT artwork_apple_url FROM main_catalog
WHERE (artwork_url IS NULL OR artwork_url NOT LIKE '%s3-%')
UNION ALL
SELECT DISTINCT artwork_apple_url FROM main_collectioninstance
WHERE (artwork_url IS NULL OR artwork_url NOT LIKE '%s3-%')
'''
cursor.execute(sql)
这给我一个格式化错误 - 我如何在我的sql中获取LIKE %s3-%'
(s3
是亚马逊网址的一部分。)
答案 0 :(得分:3)
如果您使用parametrized SQL,则参数的引用将由DB适配器为您完成。它更容易,有助于防止SQL注入。请注意,相应的地标(例如%s
)取决于您使用的数据库适配器。 %s
适用于MySQLdb,但?
是我们的例句所使用的地标符号。
sql = '''SELECT DISTINCT artwork_apple_url FROM main_catalog
WHERE (artwork_url IS NULL OR artwork_url NOT LIKE %s)
UNION ALL
SELECT DISTINCT artwork_apple_url FROM main_collectioninstance
WHERE (artwork_url IS NULL OR artwork_url NOT LIKE %s)
'''
cursor.execute(sql, ['%s3-%']*2)
答案 1 :(得分:0)
Place a backward slash before each percentage symbol you wish to escape and insert this function on the same line: ESCAPE '\'
从这里开始:http://www.ehow.com/how_8601061_escape-special-character-sql.html?dmsp=manual