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

Jupyter Notebook用pyodbc查询SQL Server 2018出现Invalid column name错误如何解决

错误原因
  • 代码逻辑顺序错误,还没定义查询语句和参数变量就提前执行了一次无参数的查询
  • pyodbc操作SQL Server的参数占位符应该用?,你写的[{%s}]会被SQL Server的方括号语法解析为列名,自然触发找不到对应列的报错
  • 没有定义query变量,第二次调用cursor.execute()时找不到可用的查询语句
修正后的完整代码
import pyodbc
import datetime
conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=DESKTOP-MBJNNJR;'
                      'Database=master;'
                      'Trusted_Connection=yes;')
cursor = conn.cursor()

# 定义带正确占位符的查询语句
query = "SELECT Employee_Name, Hire_Date FROM Employee WHERE Hire_Date BETWEEN ? AND ?"
hire_start = datetime.date(1999, 1, 1)
hire_end = datetime.date(1999, 12, 31)
# 传入参数执行查询
cursor.execute(query, (hire_start, hire_end))
for (Employee_Name, Hire_Date) in cursor:    
    print("{}, {} was hired on {:%d %m %Y}".format(Employee_Name, Hire_Date))
cursor.close()
conn.close()
补充说明
  • SQL Server的[]语法是用来包裹关键字、带特殊字符的列名/表名的,不要套在参数占位符外面,否则会被解析为字段名
  • pyodbc参数化查询统一使用?作为占位符,不需要加其他修饰符,传入参数的顺序要和占位符顺序对应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:24:06