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

Django中如何传递含双引号、单引号的变量至SQL查询字符串?

在Django中处理含特殊引号的SQL传参问题

核心原则:别手动拼接SQL字符串

你遇到的引号冲突只是表面问题,手动拼接SQL最大的风险是SQL注入——这是严重的安全漏洞。Django提供了安全的参数化方式,既能解决引号问题,又能彻底规避注入风险:

1. 用Django ORM(最省心的方案)

假设你的数据库表对应Django模型是Table1(注意模型名不能有空格,数据库表名如果是table 1建议改成table_1,符合命名规范),直接用ORM的create方法,它会自动处理所有特殊字符:

from your_app.models import Table1

variable1 = input()
# 直接创建对象,ORM自动转义所有特殊符号
Table1.objects.create(content=variable1)

2. 用参数化原生SQL

如果必须写原生SQL,用Django的数据库游标时传入参数列表,绝对不要自己拼字符串:

from django.db import connection

variable1 = input()
with connection.cursor() as cursor:
    # %s是参数占位符,Django会自动适配数据库类型并完成转义
    cursor.execute("INSERT INTO table_1 (content) VALUES (%s)", [variable1])

注:不同数据库的占位符写法可能有差异,但Django的cursor.execute会自动处理适配,统一用%s即可兼容大部分场景。

特殊需求:直接忽略变量中的引号

如果业务要求必须去掉输入里的单双引号,可以先做字符串清洗,再用上面的安全方式传参:

variable1 = input()
# 移除所有单引号和双引号
cleaned_content = variable1.replace("'", "").replace('"', '')
# 用ORM或参数化SQL存入数据库
Table1.objects.create(content=cleaned_content)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:15:57