我在Python中通过pyODBC向SQL Server 2012发送多个查询时遇到问题。 我有一个带有查询的DataFrame,我想用它来查询DB。像这样:
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=mySERVER;DATABASE=myDB;UID=myUID;PWD=myPSWD')
cursor = cnxn.cursor()
cursor2 = cnxn.cursor()
for i in range(len(myDataFrame.Column_w_Queries)):
query = '"' + myDataFrame.Column_w_Queries[i] + '"'
cursor.execute(query)
one = cursor.fetchone()
print(one)
此示例中的 query
为"select * from [DB].[schema].[table1]"
(包括引号)。
问题是,当我运行cursor.execute(query)
时出现以下错误:
ProgrammingError:(' 42000'," [42000] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]找不到存储过程'从[DB]中选择* 。[schema]。[table1]'。(2812)(SQLExecDirectW)")
我做错了什么?
答案 0 :(得分:1)
你必须摆脱周围的双引号。例如,打开SQL Server Management Studio,并尝试运行:
"select * from [DB].[schema].[table1]"
您将收到错误:
Msg 2812, Level 16, State 62, Line 1
Could not find stored procedure 'select * from [DB].[schema].[table1]'.
现在尝试:
select * from [DB].[schema].[table1]
......它应该有效。祝你好运!