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

Python使用pyodbc向SQL Server建表时关键字作列名报错如何解决

问题原因

  • 反引号是MySQL等数据库的保留字转义语法,SQL Server原生不支持该写法
  • 双引号转义标识符需要提前开启QUOTED_IDENTIFIER配置,SQL Server默认该配置为关闭状态,此时双引号会被识别为字符串边界符,因此触发语法错误

解决方案

SQL Server原生支持使用方括号[]包裹保留关键字作为标识符使用,无需额外修改配置,兼容性最优,修改后的代码如下:

cnxn = pyobdc.connect(...)
cursor = cnxn.cursor()

# 用方括号包裹保留关键字exit作为列名
sql = 'create table if not exists tab1 (id integer primary key, entry varchar (200), [exit] varchar (200))'

cursor.execute(sql)
cnxn.commit()

注意事项

后续对该列进行增删改查操作时,也需要用方括号包裹exit列名,例如查询语句写为SELECT id, entry, [exit] FROM tab1,否则仍会触发保留字语法错误。

如果确实需要使用双引号转义的写法,可以在建表前先执行开启配置的语句:

# 先开启QUOTED_IDENTIFIER配置
cursor.execute("SET QUOTED_IDENTIFIER ON")
sql = 'create table if not exists tab1 (id integer primary key, entry varchar (200), "exit" varchar (200))'
cursor.execute(sql)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:57:05