从python/pyodbc/sqlalchemy中的T-SQL代码块返回值

从python/pyodbc/sqlalchemy中的T-SQL代码块返回值,python,pandas,tsql,sqlalchemy,Python,Pandas,Tsql,Sqlalchemy,我需要通过pyodbc从python执行一块T-SQL代码: DECLARE @result table(logTime datetime, value float)      /* ... do some processing and fill the @result table ... */                SELECT * FROM @result 我用python执行它,如下所示: import sqlalchemy import pandas as pd  

我需要通过pyodbc从python执行一块T-SQL代码:

DECLARE @result table(logTime datetime, value float)
    
/* ...
 do some processing and fill the @result table 
   ... */                
SELECT * FROM @result
我用python执行它,如下所示:

import sqlalchemy
import pandas as pd
   
    
engine = sqlalchemy.create_engine("mssql+pyodbc:///?dsn=mydb&trusted_connection=yes'")
conn = engine.connect()

sql = f"""
DECLARE @result table(logTime datetime, value float)
    
/* ...
 do some processing and fill the @result table 
   ... */                
SELECT * FROM @result
"""

info = pd.read_sql(sql, conn)
但是,如果它用于执行单个语句或存储过程,则会导致:

ResourceClosedError:此结果对象不返回行。它已自动关闭

如何从这样的T-SQL代码块中获得结果?不幸的是,我没有在数据库上创建存储过程的权限,如果可以,这将很容易。

找到了一个解决方案:

添加

SET NOCOUNT ON
在块的开头,解决它:)