我使用 Python 的 SQL 查询中的错误是什么?

What is the error in my SQL query with Python?

我正在尝试使用 python 从 SQL 服务器数据库检索数据,但系统崩溃并显示以下错误:

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)")

代码:

import pandas as pd
import streamlit as st 

search_term=st.text_input("Enter Search Term")
cursor.execute("select * from testDB.dbo.t1 where ID = ? OR where  first =?",search_term,search_term) 
                                
dd = cursor.fetchall()
print(dd)

您有两个 where 子句。应该只有一个 where 子句,它可以有任意多个由逻辑运算符连接的条件:

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

您已经在子句中添加了一个额外的 WHERE

正确的写法是:

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

此外,如果您直接编写 SQL 语句,而不使用 ORM,我建议您直接连接到您的数据库并在那里测试查询,这样会更容易找到和调试错误。 如果你想要一个很棒的免费替代品,并使用 Mac,我建议 Postico