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

SQL中如何将待修改属性设置为变量执行UPDATE语句?

报错原因

数据库的参数化查询占位符?仅支持传入查询值,不支持传入列名、表名这类SQL结构标识符。预编译阶段数据库会将?标记的位置识别为值位,你传入的列名会被自动加上引号包裹,最终生成的SQL语法不符合规范,因此触发报错。

修复方案

动态列名需要手动拼接进SQL语句,同时必须加列名白名单校验避免SQL注入风险,值的位置仍保留参数化占位符即可,示例代码如下:

# 替换为你acteurs表中所有允许修改的合法列名
allowed_columns = ["NAME", "AGE", "COUNTRY"]
if attribute not in allowed_columns:
    raise ValueError(f"不允许修改列:{attribute}")

# 列名用变量拼接,值仍使用参数化占位符
cur.execute(f"""
    UPDATE acteurs SET {attribute}=? WHERE IDACTEUR=?;
""", (newvalue, actorid))
conn.commit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:06:03