我的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
相关产品推荐
相关产品推荐

