我使用 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
我正在尝试使用 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