You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python占位符替换时为何出现首尾反斜杠?

问题排查与解决

首先要明确:你看到的反斜杠大概率只是Python对字符串的表示形式,而非实际存储的内容。

比如在Python交互式环境中直接查看变量时,会用repr()函数输出字符串,此时为了区分字符串的边界(你的SQL用双引号包裹,内部的单引号会被转义显示),但实际字符串里并没有反斜杠。你可以通过print()函数输出SQL字符串,就能看到真实的内容——此时trade_date = '2022-11-29'应该是正常显示的。

如果确实存在实际内容带反斜杠的情况,检查以下两点:

  • 确认passive_availablity_date.strftime('%Y-%m-%d')的输出:直接打印这个值,确保它是纯2022-11-29字符串,没有额外转义。
  • 检查字符串拼接逻辑:你的代码用三重双引号包裹SQL,内部单引号是普通字符,format()替换时只会直接插入日期字符串,不会自动添加转义。如果仍有问题,尝试改用f-string写法验证:
    sql = f"""SELECT security_id   AS securityID,
           trade_date    AS date,
           available,
           currency_code AS sourceCurrency
        FROM   cppib_market_passive_swap_availability
        WHERE  trade_date = '{passive_availablity_date.strftime('%Y-%m-%d')}' """
    

最后提醒:直接拼接SQL字符串存在SQL注入风险,建议使用数据库驱动的参数化查询,比如:

cursor.execute("""SELECT security_id   AS securityID,
       trade_date    AS date,
       available,
       currency_code AS sourceCurrency
    FROM   cppib_market_passive_swap_availability
    WHERE  trade_date = %s""", (passive_availablity_date.strftime('%Y-%m-%d'),))

参数化查询不仅能彻底避免引号转义问题,还能提升代码安全性。

内容的提问来源于stack exchange,提问作者Avi G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 10:01:23