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

如何使用Python向MySQL插入含逗号的完整句子至单列?代码报错求助

解决Python插入含逗号文本到MySQL的语法错误问题

你的问题根源在于直接使用字符串格式化拼接SQL语句——当文本里包含单引号、逗号这类特殊字符时,会直接打乱SQL语句的语法结构(这就是你触发报错的原因),而且这种写法还存在极高的SQL注入风险。

正确方案:使用参数化查询

Python的MySQLdb驱动原生支持参数化查询,通过占位符%s替代直接拼接变量,驱动会自动处理特殊字符的转义,完美解决你的问题。

修正后的代码如下:

# 用%s作为占位符,参数统一放在execute的第二个元组参数中
cursor.execute(
    """INSERT INTO company(
        company_name, 
        company_information, 
        company_location, 
        company_phone_number, 
        comp_web_site, 
        photo
    ) VALUES (%s, %s, %s, %s, %s, %s)""",
    (company_name, company_information, company_location, phone_number, web_site, image)
)
# 务必提交事务(如果你的数据库连接没有设置自动提交)
conn.commit()

额外说明:关于NOW()的处理

你原来的代码错误地把'NOW()'当作参数传入了,但NOW()是MySQL的内置函数,不需要用字符串包裹,直接写在SQL语句里即可。如果需要插入当前时间,可以给表新增一个时间字段(比如created_at),然后修改SQL:

cursor.execute(
    """INSERT INTO company(
        company_name, 
        company_information, 
        company_location, 
        company_phone_number, 
        comp_web_site, 
        photo,
        created_at
    ) VALUES (%s, %s, %s, %s, %s, %s, NOW())""",
    (company_name, company_information, company_location, phone_number, web_site, image)
)

参数化查询的优势

  • 自动转义特殊字符(逗号、单引号等),保证SQL语句语法始终正确;
  • 彻底规避SQL注入攻击,这是字符串拼接写法的致命安全漏洞。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 15:49:08