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

如何将含参数的MySQL语句作为单个参数传入Python的execute方法

解决f-string拼接SQL时字符串参数无引号的语法错误
  • 问题根源:直接用f-string插入字符串变量时,生成的SQL语句中字符串值没有被单引号包裹,不符合MySQL语法规范。
  • 修正方案:在f-string的变量占位符两侧添加单引号,确保生成的SQL里字符串参数被正确包裹。

修改后的代码:

value1 = 'ABC'
value2 = 'XYZ'
# 在变量两侧添加单引号,保证SQL语法正确
query = f"SELECT column1, column2 from table1 where column1 = '{value1}' or column2 = '{value2}'"

mycursor = mydb.cursor()
mycursor.execute(query)  # 注意变量名与定义的query保持一致
mydb.commit()

重要注意事项

  • 这种拼接方式存在严重的SQL注入风险,如果value1或value2来自用户输入,攻击者可通过构造恶意字符串篡改SQL逻辑,窃取或破坏数据。
  • 如果变量本身包含单引号(比如value1 = "O'Neil"),直接拼接会再次触发语法错误,需要手动转义单引号(将单个单引号替换为两个单引号):
    value1 = "O'Neil"
    # 手动转义字符串中的单引号
    escaped_value1 = value1.replace("'", "''")
    query = f"SELECT column1, column2 from table1 where column1 = '{escaped_value1}'"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:29:54