python - 如何在 sql 查询中正确转义 %s

标签 python mysql sql

我有以下 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/

相关文章:

mysql - #1064 - 你的 SQL 语法有错误 '(14) NOT NULL, ` ID_MEMBER` mediumint(8) unsigned NOT NULL default '0' , `ip` ' 在第 3 行

mysql - 每天计算注册用户的 SQL 查询

java - statements.executeUpdate() 始终返回 1

python - 保留句子的标点符号,但删除不敬信息的所有特殊字符 Python

python - 确定蛋白质片段的组合是否可能覆盖完整的蛋白质序列

python - 使用条件删除列表的元素

python - 如何矢量化 Fisher 精确检验?

php - Base 64 代码不起作用...未以 html php mysql 形式显示数据库中的图像

php - 将参数传递给包含在 IMG 标签中的 PHP 文件

php - 如何添加我的代码检查第三人而不是用户和管理员,如图所示