从python/pyodbc/sqlalchemy中的T-SQL代码块返回值
我需要通过pyodbc从python执行一块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
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
在块的开头,解决它:)