Python如何替换字符串单引号为两个单引号生成合规SQL语句
高性能SQL单引号转义实现方案
最优实现(适配大批量数据处理)
直接调用Python内置字符串方法完成转义,底层为C实现,无额外Python层开销,性能拉满,无需提前统计字符串中单引号数量,自动适配任意数量单引号的替换需求:
def escape_sql_single_quote(s: str) -> str: return s.replace("'", "''")
效果校验
使用指定测试用例验证:
test_str = "That's John's Sister's Cat!" print(escape_sql_single_quote(test_str))
输出结果完全符合要求:
That''s John''s Sister''s Cat!
性能说明
- 内置
str.replace()是Python中字符串替换性能最高的实现,处理速度比正则替换、手动逐字符遍历拼接快1~2个数量级,处理百万级行数据无明显性能压力。 - 替换逻辑不存在边界遗漏,无论单引号出现在字符串头部、尾部、连续重复多少次,都能正确替换为两个连续单引号,不会出现语法错误。
最佳实践提示
非必要不手动拼接SQL,优先使用数据库驱动自带的参数化查询能力,从根源规避单引号语法冲突、SQL注入风险,完全不需要手动做转义处理,以pymysql为例:
# 参数化写法自动处理特殊字符转义 cursor.execute( "INSERT INTO table_name (content_col, name_col) VALUES (%s, %s)", ("That's John's Sister's Cat!", "Molly's cat is blue") )
如果是生成离线SQL脚本、无法使用参数化接口的场景,直接使用上述replace转义方案即可。
内容的提问来源于stack exchange,提问作者Jwest
相关产品推荐
相关产品推荐

