我正在处理sql server数据库,
我有一个名为' table1 '的表,其中包含1列和1行
exp_num
0
我正在尝试将0
值exp_num列更新为+1,并返回旧实验并更新实验。
为此,我使用声明语句。
DECLARE @UpdateOutput1 table (Oldexp_num int,Newexp_num int);
UPDATE get_exp_num
SET exp_num = exp_num+1
OUTPUT
DELETED.exp_num,
INSERTED.exp_num
INTO @UpdateOutput1;
select * from @UpdateOutput1
当我在SQL editor
中运行时,我会得到结果。
Oldexp_num Newexp_num
0 1
但如果我将其作为查询使用,并尝试使用pyodbc包我会收到错误。
import pyodbc
connection = pyodbc.connect() # i am getting a connection
query = "DECLARE @UpdateOutput1 table (Oldexp_num int,Newexp_num int);UPDATE get_exp_num SET exp_num = exp_num+1 OUTPUT DELETED.exp_num, INSERTED.exp_num INTO @UpdateOutput1; select Newexp_num from @UpdateOutput1;"
cursor = connection.cursor()
cursor.execute(query)
cursor.fetchone()
当我在做cursor.fetchone()时,我收到了以下错误。
File "<ipython-input-1398-bdaba305080c>", line 1, in <module>
cursor.fetchone()
ProgrammingError: No results. Previous SQL was not a query.
pyodbc包中有错误吗?或者在我的查询中
答案 0 :(得分:6)
通过将SET NOCOUNT ON;
添加到匿名代码块的开头来解决问题。该语句抑制由UPDATE ...
等DML语句生成的记录计数值,并允许直接检索结果集。