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

使用PyODBC查询MS SQL提示Invalid column name 'Escalation'如何解决

报错原因与解决方案

报错原因

MS SQL Server 默认开启QUOTED_IDENTIFIER配置,该配置下双引号包裹的内容会被解析为数据库对象名(列名、表名等),而非字符串常量。你在查询语句中使用双引号包裹了需要匹配的字符串值Escalation,导致数据库误将其识别为列名,而目标表中不存在该列,因此触发Invalid column name 'Escalation'报错。

解决方案

方案1:替换字符串包裹符

将SQL语句中包裹字符串的双引号替换为单引号,单引号是SQL标准中字符串字面量的通用包裹符号,修改后代码如下:

query = ''' 
    select a.created, a.asset_num, a.description, a.resolution, a.type, a.subtype
    from SC_SR_EXPORT_V as a
    where TYPE = 'Escalation';
'''
data = pd.read_sql(query, cnxn)
data.head()

方案2:使用参数化查询(更推荐)

通过pandas read_sql的params参数传递查询值,无需手动处理引号转义问题,同时可以防范SQL注入风险,适合查询值为动态变量的场景,代码如下:

query = ''' 
    select a.created, a.asset_num, a.description, a.resolution, a.type, a.subtype
    from SC_SR_EXPORT_V as a
    where TYPE = ?;
'''
# 参数放在元组中传入,即使值包含特殊字符也无需额外处理
data = pd.read_sql(query, cnxn, params=('Escalation',))
data.head()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:24:01