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

我的Python连接SQL Server执行SQL查询的错误是什么?

SQL语法错误修复方案

错误原因

报错明确指向WHERE关键字附近存在语法错误,问题出在查询语句里重复声明了WHERE关键字:

ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'where'. (156) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. (8180)")

SQL语法规定,单条SELECT查询的过滤条件段仅需要一个WHERE关键字,多个过滤条件之间直接用AND/OR拼接即可,不需要每个条件前都加WHERE。

错误代码定位

原代码中出错的行是:

cursor.execute("select * from testDB.dbo.t1 where ID = ? OR where  first =?",search_term,search_term) 

OR后面多写了多余的where,直接触发语法校验失败。

修正后完整代码

import pandas as pd
import streamlit as st 

search_term=st.text_input("Enter Search Term")
# 去掉OR后面的多余where关键字即可
cursor.execute("select * from testDB.dbo.t1 where ID = ? OR first = ?",search_term,search_term) 
                                
dd = cursor.fetchall()
print(dd)

额外注意事项

  • 若ID字段为数值类型,需要先将search_term转换为对应数值类型,避免类型不匹配导致查询结果异常
  • 复杂SQL编写时可以先打印出生成的语句到控制台核对语法,能快速定位这类拼写类错误
  • 数据库操作完成后建议及时关闭游标和连接,避免占用不必要的资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 11:15:07