我有以下 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
是亚马逊 url 的一部分)。
最佳答案
如果您使用 parametrized SQL ,参数的引用将由数据库适配器为您完成。它更容易并有助于防止 SQL 注入(inject)。请注意,适当的地标(例如 %s
)取决于您使用的数据库适配器。例如,%s
适用于 MySQLdb,但 ?
是 oursql 使用的地标符号。
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)
关于python - 如何在 sql 查询中正确转义 %s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25353218/